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

标签 python arrays numpy

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

相关文章:

python - Python中的平均最近坐标

python - 函数集成返回 “only length-1 arrays can be converted to Python scalars”

Python - 检查 ui 文本字段内的整数

Javascript:用数组中的图像填充表格

python - 在 Python 中向量化多维函数

php - 如何在函数php中向数组添加元素

python - 两个字符串数组的乘积

python - .exe 在双击启动后立即关闭

python - 根据行相关和列相关条件设置数据帧值

python - 如何使用pygtk打印图像