我需要将元素从一个numpy数组复制到另一个numpy数组,但只有在满足条件时才需要。我们假设我有两个数组:
x = ([1,2,3,4,5,6,7,8,9])
y = ([])
我想添加从x到y的数字,但只有当它们符合条件时,我们才能检查它们是否可以被2整除。我知道我可以做到以下几点:
y = x%2 == 0
使y成为值的数组' true'并且' false'。这不是我想要完成的,但我想要实际值(0,2,4,6,8),只有那些评估为真的值。
答案 0 :(得分:2)
您可以像这样获得所需的值:
import numpy as np
x = np.array([1,2,3,4,5,6,7,8,9])
# array([1, 2, 3, 4, 5, 6, 7, 8, 9])
y = x[x%2==0]
# y is now: array([2, 4, 6, 8])
而且,你可以这样总结:
np.sum(x[x%2==0])
# 20
说明:正如您所注意到的,x%2==0
为您提供了一个布尔数组array([False, True, False, True, False, True, False, True, False], dtype=bool)
。您可以将其用作"掩码"在原始数组中,通过使用x[x%2==0]
对其进行索引,返回x
的值,其中"掩码"是True
。有关详细信息,请查看numpy
indexing documentation。