这真的是一个array
np.arrays 或这些数组的列表?如果它是一个数组,它的形状和数据类型是什么?
如果它是一个列表或数组dtype=object
,那么你必须迭代项目,并重塑每一项。
[a.reshape(3,50) for a in A]
如果你有一个 3d 数组,它的形状可能是(40, 1, 150)
.
A.reshape(40, 3, 50)
由于“对象”数组中的项目可以是任何东西——字符串、数组、列表、字典——所以不能有reshape
这“同时”适用于所有这些。即使它们都是数组,它们也可以具有不同的维度。事实上,这通常就是生成数组的数组的方式。
In [5]: np.array([[1,2,3],[2,3]])
Out[5]: array([[1, 2, 3], [2, 3]], dtype=object)
您必须采取特殊步骤来构造一个包含所有形状相同的项目的对象数组。np.array
尝试构建尽可能高维的数组。
In [7]: A=np.empty((2,),dtype=object)
In [8]: A[0] = np.array([1,2,3])
In [9]: A[1] = np.array([4,5,6])
In [10]: A
Out[10]: array([array([1, 2, 3]), array([4, 5, 6])], dtype=object)
另一种看待它的方式:reshape
只是改变数组的一个属性。它对数据没有任何作用。对于 3d 数组,有一个shape
值和一个数据块。
但在对象数组中,每个对象都有自己的shape
and data
.