执行此操作时:
a = np.array([[np.array([[2, 2]]), np.array([[3, 3]])]])
最后一次调用
np.array实际上将内部的两个连接起来,所以最后得到一个数组:
>>> aarray([[[[2, 2]], [[3, 3]]]])>>> a.shape(1, 2, 1, 2)
但是要模仿一个单元格数组,您基本上需要一个数组数组。您可以通过设置来实现这一点
dtype=object,但是必须创建数组并分别设置元素,以避免自动合并。
three = array([[array([[2, 2, 2]]), array([[3, 3]])]])two = np.empty(three.shape, dtype=object)two[0,0,0] = np.array([[2,2]])two[0,1,0] = np.array([[3,3]])
然后:
sio.savemat('two.mat', {'two': two})看看它们是什么样的:
>>> twoarray([[[array([[2, 2]])], [array([[3, 3]])]]], dtype=object)>>> two.shape(1, 2, 1)
请注意,由于您有太多嵌套的括号,因此我可能对您想要的形状感到困惑,因此您可能必须重塑其中的一些形状,但是无论如何都应保持这种想法。



