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
即可。
我的代码生成 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)
2) 假设您有列表 [8, -8, -8]
。如果只想计算第一对的距离,只需在追加过程后添加 break
即可。