我有两个不同维度的 numpy 数组。我想将较大数组的那些额外元素添加到较小数组,只有第 0 个元素和第 1 个元素应为 0。
例如:
a = [ [2,4],[4,5], [8,9],[7,5]]
b = [ [2,5], [4,6]]
将缺失的元素添加到b后,b会变成如下:
b [ [2,5], [4,6], [8,0], [7,0] ]
我已经在某种程度上尝试了逻辑,但是由于我无法检查该元素是否已经添加到 b 中,所以有些值被冗余添加。
其次,我在附加数组 c 的帮助下执行此操作,该数组是 b 的副本,然后对 c 执行所需的操作。如果有人可以告诉我如何在没有第三个数组 c 的情况下做到这一点,那将非常有帮助。
import numpy as np
a = [[2,3],[4,5],[6,8], [9,6]]
b = [[2,3],[4,5]]
a = np.array(a)
b = np.array(b)
c = np.array(b)
for i in range(len(b)):
for j in range(len(a)):
if a[j,0] == b[i,0]:
print "matched "
else:
print "not matched"
c= np.insert(c, len(c), [a[j,0], 0], axis = 0)
print c
最佳答案
#####For explanation#####
#basic set operation to get the missing elements
c = set([i[0] for i in a]) - set([i[0] for i in b])
#c will just store the missing elements....
#then just append the elements
for i in c:
b.append([i, 0])
输出-
[[2, 5], [4, 6], [8, 0], [7, 0]]
编辑 -
但是因为它们是 numpy 数组,你可以这样做(并且不使用 c 作为中间体) - 只需两行
for i in set(a[:, 0]) - (set(b[:, 0])):
b = np.append(b, [[i, 0]], axis = 0)
输出-
array([[2, 5],
[4, 6],
[8, 0],
[7, 0]])
关于python - 如何比较两个 numpy 数组并通过调整将缺失值添加到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38250074/