在python中并排添加2D数组

在python中并排添加2D数组,python,arrays,numpy,Python,Arrays,Numpy,大家好,我想在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

大家好,我想在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)

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

相反,您可以展平每个阵列并连接:

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

matrix([[1, 2, 1, 2],
        [1, 2, 1, 2]])
[编辑:

重读你的问题,我似乎误解了你的意思@Thomas的回答在您的场景中更有意义,另一种选择是:


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

相反,您可以展平每个阵列并连接:

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

matrix([[1, 2, 1, 2],
        [1, 2, 1, 2]])
[编辑:

重读你的问题,我似乎误解了你的意思@Thomas的回答在您的场景中更有意义,另一种选择是:


我认为这是因为加法返回一个普通的矩阵加法,它将两个矩阵逐分量相加


试试看,np.concatenate(),它可能会像@sacul所建议的那样有所帮助。

我认为发生这种情况的原因是加法返回一个普通的矩阵加法,将两个矩阵的分量逐个相加

试试看,np.concatenate(),它可能会像@sacul建议的那样有所帮助。

使用

另一种选择是使用:

使用

另一种选择是使用:


我可以将其用于两个以上的数组吗?是的,只需将所有需要的数组放入方括号中。为什么在这里使用
flatten
?对于这2(2,2)个矩阵,我得到了一个(1,8)。我认为这个解决方案在这种情况下是有效的,因为彼此上面的矩阵是相同的,就像它们彼此相邻一样。我建议只使用
np.hstack((a,b))
,这是numpythonic方法。事实上,
列堆栈
在这里可能更合适,因为您的答案已经被接受,可能值得添加其他选项(我很少发现询问者接受其他答案)。另外,考虑到这解释了为什么他的尝试不起作用,我认为你的更有价值。我可以将其用于两个以上的数组吗?是的,只需将所有需要的数组放入方括号中。你为什么在这里使用
展平
?对于这2(2,2)个矩阵,我得到了一个(1,8)。我认为这个解决方案在这种情况下是有效的,因为彼此上面的矩阵是相同的,就像它们彼此相邻一样。我建议只使用
np.hstack((a,b))
,这是numpythonic方法。事实上,
列堆栈
在这里可能更合适,因为您的答案已经被接受,可能值得添加其他选项(我很少发现询问者接受其他答案)。另外,考虑到这解释了他的尝试失败的原因,我认为你的更有价值。
np.matrix
可以方便地使用这个字符串输入创建一个小矩阵,但通常我们鼓励从嵌套列表输入创建数组:
a=np.array([[1,2],[1,2]])
我认为@Thomas的答案在这种情况下比我的答案更有意义
np。矩阵
可以方便地用这个字符串输入创建一个小矩阵,但通常我们鼓励从嵌套列表输入创建数组:
a=np.array([[1,2],[1,2]])
我认为@Thomas的答案在这种情况下比我的答案更有意义
>>> numpy.concatenate((a, b), axis=1)
matrix([[1, 2, 1, 2],
       [1, 2, 1, 2]])
>>> np.hstack((a, b))
matrix([[1, 2, 1, 2],
        [1, 2, 1, 2]])