执行此操作时:
a = np.array([[np.array([[2, 2]]), np.array([[3, 3]])]])
最后一次调用np.array
实际上将内部的两个连接起来,所以最后得到一个数组:
>>> a
array([[[[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})
看看它们是什么样的:
>>> two
array([[[array([[2, 2]])],
[array([[3, 3]])]]], dtype=object)
>>> two.shape
(1, 2, 1)
请注意,由于您有太多嵌套的括号,因此我可能对您想要的形状感到困惑,因此您可能必须重塑其中的一些形状,但是无论如何都应保持这种想法。