python - numpy.concatenation 的问题

标签 python arrays numpy matrix

我定义了 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/

相关文章:

javascript - 循环遍历 Google Places 评论数组并从回调函数获取值

python - 我们可以将向量更改为 numpy 中的矩阵,向量中的元素在具有 m*n 维度的矩阵中重复

python - 在外部 try/except 中捕获异常

python - 调整矩阵数组乘法以使用 Numpy Tensordot

javascript - 在 JavaScript 中对数值数组和对象数组进行排序

c++ - 分配给 char[8] 的 vector

python - 对如何使用 numpy.pad 向我的 numpy imagearray 正确添加白色边框感到困惑

python - 如何避免因并发创建/更新而发生完整性错误?

python - 如何迭代行并根据同一行中其他字段的内容查询特定字段?

python - 将 numpy.bool 数组写入压缩文件?