我有一个形状(1429,1)
形状的numpy数组,其中每一行本身是一个形状为(3,100
)的numpy数组,其中l可能因行而异。 如何通过展平每行来重塑这个数组,使得生成的numpy数组的形状为(1429, 300)
?重塑一个多维Numpy阵列
1
A
回答
2
我猜您最初的数组的形状(1429,3,100),如果这是真的,你可以改变它的形状如下:
import numpy as np
a = a.flatten().reshape((1429, 300)) #a is the initial numpy array
2
类型的嵌接结构大概是object.
这只是一个收集参考资料1429 numpy.ndarrays
。
作为为例:
a=np.empty((1429,1),object)
for x in a :
x[0]=np.random.rand(3,100)
In [19]: a.shape,a.dtype
Out[19]: ((1429, 1), dtype('O'))
In [20]: a[0,0].shape
Out[20]: (3, 100)
结构可能是不连续的。要获得包含所有数据块,你必须重建它,以获得良好的布局:
b=np.array([x.ravel() for x in a.ravel()])
In [21]: b.shape
Out[21]: (1429, 300)
ravel
丢弃不符合尺寸。
0
假设它是一个具有形状(1429,1)的对象dtype数组,并且所有元素都是形状为2d的形状(3,100),“平坦”的一个好方法是使用concatenate
或stack
。
np.stack(arr.ravel()).reshape(-1,300)
我使用arr.ravel()
以使阵列看起来像一个(1429)元素列表stack
。 stack
然后连接元素,创建一个(1429,3,100)数组。重塑然后将其转换为(1429,300)。
In [939]: arr = np.empty((5,1),object)
In [940]: arr[:,0] = [np.arange(6).reshape(2,3) for _ in range(5)]
In [941]: arr
Out[941]:
array([[array([[0, 1, 2],
[3, 4, 5]])],
[array([[0, 1, 2],
[3, 4, 5]])],
[array([[0, 1, 2],
[3, 4, 5]])],
[array([[0, 1, 2],
[3, 4, 5]])],
[array([[0, 1, 2],
[3, 4, 5]])]], dtype=object)
In [942]: np.stack(arr.ravel())
Out[942]:
array([[[0, 1, 2],
[3, 4, 5]],
[[0, 1, 2],
[3, 4, 5]],
[[0, 1, 2],
[3, 4, 5]],
[[0, 1, 2],
[3, 4, 5]],
[[0, 1, 2],
[3, 4, 5]]])
In [943]: np.stack(arr.ravel()).reshape(-1,6)
Out[943]:
array([[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5]])
np.stack
使用默认axis=0
相同np.array(...)
。
或用concatenate
In [950]: np.concatenate(arr.ravel(),axis=0)
Out[950]:
array([[0, 1, 2],
[3, 4, 5],
[0, 1, 2],
[3, 4, 5],
[0, 1, 2],
[3, 4, 5],
[0, 1, 2],
[3, 4, 5],
[0, 1, 2],
[3, 4, 5]])
In [951]: np.concatenate(arr.ravel(),axis=0).reshape(5,6)
Out[951]:
array([[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5]])
相关问题
- 1. 重塑numpy的阵列到一个多维数组
- 2. 重塑numpy的阵列
- 3. 在numpy中重塑阵列
- 4. 重塑numpy的阵列/嵌套阵列
- 5. 结合numpy阵列和重塑列表
- 6. Numpy重塑1d到2d阵列,1列
- 7. numpy通过堆积列将二维矩阵重塑为三维矩阵
- 8. 将pyspark数据框重塑为Keras的四维numpy阵列/ Theano
- 9. numpy的和PIL重塑阵列
- 10. 如何分割/重塑numpy的阵列
- 11. Matlab:将三维阵列重塑为二维阵列
- 12. 多维numpy的阵列__eq__
- 13. 关于重塑一个多维数组
- 14. 重塑3D numpy的阵列到2D阵列
- 15. 如何重塑一个Ruby阵列
- 16. 索引一个三维numpy阵列
- 17. 重塑NumPy的
- 18. 重塑4D numpy阵列到2D阵列,同时保留阵列位置
- 19. 将N维numpy阵列拆分为多个1D阵列
- 20. 重塑多维数组
- 21. 在Python中重塑一个numpy数组
- 22. 重塑一个数组的Python/numpy的
- 23. 如何重塑数组numpy的阵列分为单列
- 24. 用数组切片多维numpy阵列
- 25. numpy:在多维阵列上运行
- 26. 多维数组阵列上的Numpy linalg
- 27. numpy通过任意轴重塑多维数组
- 28. 在不使用重塑的情况下重塑n维阵列的视图
- 29. Numpy Dot产品的两个二维阵列在numpy获得三维阵列
- 30. 正确索引多维Numpy阵列与另一个索引阵列
向我们展示你的最小的和可核查的例子 – Chiel