仅在条件满足时才将numpy数组元素添加到新数组

时间:2018-04-08 01:42:30

标签: python numpy

我需要将元素从一个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),只有那些评估为真的值。

1 个答案:

答案 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

相关问题