numpy 1D 数组:识别总和为 0 的元素对

numpy 1D array: identify pairs of elements that sum to 0

我的代码生成 numpy 的一维整数数组。这是一个例子。

arr = np.array([-8, 7, -5, 2, -7, 8, -6, 3, 5])

我需要对这个数组执行两个步骤,但我在 Python 还不够新,所以我不知道如何有效地执行此操作。这两个步骤是:

a) 确定和 == 0 的对的第一个元素。对于 arr,我们有 (-8, 7, -5)。

b) 现在我需要找出 a).
中标识的每一对的索引差异 (-8,8) 的指数差异为 5,(7,-7) 的指数差异为 3, 对于 (-5,5) 是 6.

理想情况下,输出可以是二维数组,类似于:

[[-8, 5],
[ 7, 3],
[-5, 6]] 

感谢您的帮助。

这是我的解决方案:

arr = np.array([-8, 7, -5, 2, -7, 8, -6, 3, 5])

output = list()
for i in range(len(arr)):
    for j in range(len(arr)-i):
        if arr[i] + arr[i+j] == 0:
            output.append([arr[i],j])

print(output)

[[-8, 5], [7, 3], [-5, 6]]

我还有两条评论:

1) 可以通过np.asarray(output)

将列表转为numpy数组

2) 假设您有列表 [8, -8, -8]。如果只想计算第一对的距离,只需在追加过程后添加 break 即可。