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
的一个小示例,演示了问题并代表了您的实际阵列。我已用一个最小的可复制示例更新了代码。