我定义了 2 个 numpy 数组 2,3 并水平连接它们
a=numpy.array([[1,2,3],[4,5,6]])
b=numpy.array([[7,8,9],[10,11,12]])
C=numpy.concatenate((a,b),axis=0)
c 变为 4,3 矩阵 现在我用 1,3 列表尝试了同样的事情
a=numpy.array([1,2,3])
b=numpy.array([4,5,6])
c=numpy.concatenate((a,b),axis=0)
现在我期待的是 2,3 矩阵,但我得到的是 1,6。我知道 vstack 等可以工作,但我很好奇为什么会发生这种情况?我对 numpy.concatenate 做错了什么?
感谢您的回复。我可以通过使用 1,3 数组然后串联来得到建议的结果。但逻辑是我必须在每次迭代时将行添加到空矩阵中。我尝试按照建议附加:
testing=[]
for i in range(3):
testing=testing.append([1,2,3])
它给出了错误测试没有属性附加作为其无类型。此外,如果我使用 np.array([[1,2,3]]) 使用 1,3 数组的逻辑,我该如何在 for 循环中执行此操作?
最佳答案
你没有做错任何事。 numpy.concatenate
将数组序列连接在一起。这意味着它从当前数组的元素创建一个集成数组,在 2D 数组中,元素是嵌套列表,在 1D 数组中,元素是变量。
所以这不是连接
的工作,正如您所说,您可以使用np.vstack
:
>>> c=numpy.vstack((a,b))
>>> c
array([[1, 2, 3],
[4, 5, 6]])
此外,在您的代码中 list.append
将元素就地附加到列表中,您不能将其分配给变量。相反,您可以将 append
附加到 在每次迭代中进行测试
。
testing=[]
for i in range(3):
testing.append([1,2,3])
作为一种更有效的方式,您可以使用以下列表理解列表创建该列表:
testing=[[1,2,3] for _ in xrange(3)]
关于python - numpy.concatenation 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31405793/