我尝试了很多,但没有concatenate
或vstack
适合我。如何将2d numpy数组列表连接成一个3d numpy数组?
0
A
回答
4
你试过np.array
?
np.array([[1,2],[3,4]])
使得2D阵列通过连接2个维数组(列表)
同样
np.array([np.ones(3,3), np.zeros(3,3)]]
应产生一个(2,3,3)阵列。
新功能np.stack
功能可让您更好地控制添加的轴。它通过将所有输入数组的维度扩大一个并连接起来。
您可以自己扩展尺寸,例如
In [378]: A=np.ones((2,3),int)
In [379]: B=np.zeros((2,3),int)
In [380]: np.concatenate([A[None,:,:], B[None,:,:]], axis=0)
Out[380]:
array([[[1, 1, 1],
[1, 1, 1]],
[[0, 0, 0],
[0, 0, 0]]])
In [381]: _.shape
Out[381]: (2, 2, 3)
关键的东西理解是:
匹配的输入尺寸 - 他们必须匹配所有但被加入
扩大投入的尺寸尺寸如所须。要连接2D阵列以形成3D,2D必须首先展开为3D。那
None
或np.newaxis
诀窍特别有价值。沿右轴连接。
stack
,hstack
,vstack
等都推动这项工作,而是一种技能numpy的用户应该能够直接与concatenate
工作。在交互式会话中练习小样本。
In [385]: np.array((A,B)).shape
Out[385]: (2, 2, 3)
In [386]: np.stack((A,B)).shape
Out[386]: (2, 2, 3)
In [387]: np.stack((A,B),axis=1).shape
Out[387]: (2, 2, 3)
In [388]: np.stack((A,B),axis=2).shape
Out[388]: (2, 3, 2)
如果阵列形状不同,将np.array
创建一个对象D型细胞阵列
In [389]: C=np.ones((3,3))
In [390]: np.array((A,C))
Out[390]:
array([array([[1, 1, 1],
[1, 1, 1]]),
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])], dtype=object)
In [391]: _.shape
Out[391]: (2,)
dstack
(和stack
)将具有不同大小的阵列问题:
In [392]: np.dstack((A,B,C))
....
ValueError: all the input array dimensions except for the concatenation axis must match exactly
2
你可以使用np.dstack,文档可以在这里位于:https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.dstack.html
import numpy as np
l1 = []
# create list of arrays
for i in range(5):
l1.append(np.random.random((5, 3)))
# convert list of arrays into 3-dimensional array
d = np.dstack(l1)
d.shape #(5,3,5)
相关问题
- 1. 将2D numpy数组列表转换为一个3D numpy数组?
- 2. 如何将两个1d numpy数组拉到2d numpy数组中
- 3. 2D块系列的3D数组在numpy
- 4. 如何从numpy数组列表中删除一个numpy数组?
- 5. 将2D numpy阵列重组为3D
- 6. 如何将1D numpy数组分配给2D numpy数组?
- 7. 如何将一系列数组转换为2D numpy数组
- 8. 连接NumPy数组
- 9. 如何使用for循环动态创建2D numpy数组的3d numpy数组
- 10. 如何将2d列表转换为2d numpy数组?
- 11. Numpy 2D数组到表
- 12. 如何将2d数组放入numpy中?
- 13. Numpy重组2D数组
- 14. 如何有效地将2d numpy数组转换为1d numpy元组数组?
- 15. 将RGBA numpy数组转换为二进制2d numpy数组
- 16. Numpy数组:连接数组和整数
- 17. 将两个2D numpy数组连接成一个2元组的单个二维数组
- 18. 列表成numpy数组列表
- 19. 如何制作一个3D数组的二维numpy数组?
- 20. 将numpy数组的列表视为一个numpy对象
- 21. numpy数组的滚动连接数组
- 22. 如何将3列表转换为1 3D Numpy数组
- 23. 如何将numpy二维数组与numpy一维数组相乘?
- 24. 如何在3D Numpy数组中生成一个球体
- 25. 从numpy的3d数组中删除2d子数组
- 26. 在numpy中用3d数组索引一个二维数组
- 27. 如何有效连接2 Numpy数组?
- 28. 如何连接许多numpy数组?
- 29. 将2d numpy数组转换为列表列表
- 30. 给numpy数组添加一个列表
我已经尝试了'np.array()',但是它返回了一个形状为'(n,)'的numpy数组,而其中的每个元素都是另一个numpy数组。 – xxx222
然后你的'n'阵列的形状必须不同。它正在创建一个对象数组。你阵列的形状是什么?我不明白'dstack'会如何工作。 – hpaulj
我当时并没有意识到它!我终于发现我的一些numpy数组的大小不一样。非常感谢您的回答! – xxx222