繁体   English   中英

在数组数组中重塑数组

[英]Reshaping arrays in an array of arrays

我有40个阵列的阵列,每个阵列的形状均为1x150。 有没有办法改变阵列的形状,以便我有40个3x50阵列?

我不确定是否有一种方法可以使用np.reshape并只在一行中执行,有吗?

这真的是np.arrays array ,还是这些数组的列表? 如果是数组,它的形状和dtype是什么?

如果它是列表或具有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值和一个数据块。

但是在对象数组中,每个对象都有自己的shapedata

为了重塑包含numpy-arrays的numpy-array,我发现此贡献很有帮助-您可以首先使用b=np.hstack(array_of_arrays)创建一个扁平的一维numpy-array,然后重塑b

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM