在python中并排添加2D数组

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (121)

大家好我想在python中并排添加2个2x2数组。最后我想得到一个2x4数组,哪些行是共享的,第一列和第二列来自第一个数组,第三列和第四列来自第二个数组。我得到一个数组,它总结数组并不是并排放置它们。你能帮我吗?

例:

Array 1:
[[1 2]
 [1 2]]

Array 2:
[[1 2]
 [1 2]]

预期结果:

[[1 2 1 2]
 [1 2 1 2]]

实际结果:

[[2 4]
 [2 4]]

import numpy as np

a = np.matrix('1 2; 1 2')
b = np.matrix('1 2; 1 2')

x = a + b

print(x)
提问于
用户回答回答于

运用 np.concatenate

>>> numpy.concatenate((a, b), axis=1)
matrix([[1, 2, 1, 2],
       [1, 2, 1, 2]])

另一种选择是使用np.hstack

>>> np.hstack((a, b))
matrix([[1, 2, 1, 2],
        [1, 2, 1, 2]])
用户回答回答于

numpy数组的行为方式与python列表不同。虽然+运算符可以进行某种列表连接,但是当您将它与numpy数组一起使用时,您正在进行向量加法。

相反,您可以展平每个数组并连接:

np.concatenate([a.flatten(),b.flatten()])

matrix([[1, 2, 1, 2],
        [1, 2, 1, 2]])

[编辑:]

重新阅读你的问题,似乎我误解了你的想法。另一种选择是np.column_stack

>>> np.column_stack((a,b))
matrix([[1, 2, 1, 2],
        [1, 2, 1, 2]])

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动