我想连接具有不同形状的numpy矩阵,以获得维度= 3的数组。 例如:
A= [[2 1 3 4]
[2 4 0 6]
[9 5 7 4]]
B= [[7 2 8 4]
[8 6 8 6]]
结果我需要的应该是这样的:
C=[[[2 1 3 4]
[2 4 0 6]
[9 5 7 4]]
[[7 2 8 4]
[8 6 8 6]]]
感谢您的帮助
答案 0 :(得分:1)
如果我理解你的问题,3dim numpy数组可能不是表示数据的方式,因为没有明确的形状。
3dim numpy数组的形状应为N1 x N2 x N3,而在您的情况下,每个“2dim行”的形状不同。
备选方案是将数据保存在列表(或数组列表)中,或者使用masked arrays,如果在您的情况下这恰好是合理的。
答案 1 :(得分:0)
如果np.ndarray
,您只能以有用的方式转换为3D A.shape == B.shape
。在这种情况下,您需要做的就是例如C = np.array([A, B])
。
import numpy as np
A = np.array([[2, 1, 3, 4],
[9, 5, 7, 4]])
B = np.array([[7, 2, 8, 4],
[8, 6, 8, 6]])
C = np.array([A, B])
print C
答案 2 :(得分:0)
由于A
和B
具有不同的尺寸(行数),因此您可以做的最好的形状为(2,)
和dtype object
的数组。或者至少是一个简单的结构给你的东西:
In [9]: np.array([A,B])
Out[9]:
array([array([[2, 1, 3, 4],
[2, 4, 0, 6],
[9, 5, 7, 4]]),
array([[7, 2, 8, 4],
[8, 6, 8, 6]])], dtype=object)
但是构建这样的数组并没有多大帮助。只需使用列表[A,B]
。
np.vstack([A,B])
生成(5,4)
数组。
np.array([A[:2,:],B])
提供(2,2,4)
数组。或者你可以填B
所以它们都是(3,4)
。
因此,您需要重新定义问题。