Python 将numpy数组行列值设置为另一个数组的列值

Python 将numpy数组行列值设置为另一个数组的列值,python,numpy,Python,Numpy,我试图选择前两列中的值与另一个数组中的值匹配的行,并将其最后一列值设置为该数组的最后一列值 我特别尝试过这样做: import numpy as np array_1 = np.zeros((10,3), order = "F", dtype = int) array_2 = np.zeros((5,3), order = "F", dtype = int) array_1[:5][:,0] = 1 array_1[:5][:,1] = 1 arr

我试图选择前两列中的值与另一个数组中的值匹配的行,并将其最后一列值设置为该数组的最后一列值

我特别尝试过这样做:

import numpy as np

array_1 = np.zeros((10,3), order = "F", dtype = int)

array_2 = np.zeros((5,3), order = "F", dtype = int)

array_1[:5][:,0] = 1
array_1[:5][:,1] = 1

array_2[:,0] = 1
array_2[:,1] = 1
array_2[:,2] = 3

array_1[:,2][np.where((array_1[:,0] == array_2[:,0]) & (array_1[:,1] == array_2[:,1]))] = array_2[:,2]
import numpy as np

array_1 = np.zeros((10,3), order = "F", dtype = int)

array_2 = np.zeros((5,3), order = "F", dtype = int)

array_1[:5][:,0] = 1
array_1[:5][:,1] = 1

array_2[:,0] = 1
array_2[:,1] = 1
array_2[:,2] = 3

m = (array_1[:,:2][:,None] == array_2[:,:2]).all(-1).any(1)

array_1[:,2][m] = array_2[:,2]
目标是将匹配行的第2列的值设置为3。(与数组_2相同)

我也试着用掩蔽做同样的事情

它总是抱怨形状不匹配,所以我假设我做错了什么,因为目标只是为了那些行匹配更改一个特定列的值


怎么做?

我可以这样解决:

import numpy as np

array_1 = np.zeros((10,3), order = "F", dtype = int)

array_2 = np.zeros((5,3), order = "F", dtype = int)

array_1[:5][:,0] = 1
array_1[:5][:,1] = 1

array_2[:,0] = 1
array_2[:,1] = 1
array_2[:,2] = 3

array_1[:,2][np.where((array_1[:,0] == array_2[:,0]) & (array_1[:,1] == array_2[:,1]))] = array_2[:,2]
import numpy as np

array_1 = np.zeros((10,3), order = "F", dtype = int)

array_2 = np.zeros((5,3), order = "F", dtype = int)

array_1[:5][:,0] = 1
array_1[:5][:,1] = 1

array_2[:,0] = 1
array_2[:,1] = 1
array_2[:,2] = 3

m = (array_1[:,:2][:,None] == array_2[:,:2]).all(-1).any(1)

array_1[:,2][m] = array_2[:,2]

array_1
array_2
的形状是什么?它们是不同的,但我希望这对操作没有影响,因为我只针对另一个的元素。array_1[:,0]的形状是什么。shape和
array_2[:,0]。shape
?如果它们不同,则无法进行比较。请提供一个。
array_1
array_2
的一个小示例,演示了问题并代表了您的实际阵列。我已用一个最小的可复制示例更新了代码。