gpt4 book ai didi

python - 如何比较两个 numpy 数组并通过调整将缺失值添加到另一个

转载 作者:行者123 更新时间:2023-11-28 22:35:21 25 4
gpt4 key购买 nike

我有两个不同维度的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com