【发布时间】:2012-10-23 11:03:26
【问题描述】:
必须有一种(非常)快速有效的方法来仅从 numpy 数组中获取元素,或者更有趣的是从它的切片中获取元素。 假设我有一个 numpy 数组:
import numpy as np
a = np.arange(-10,10)
如果我有一个列表:
s = [9, 12, 13, 14]
我可以从 a 中选择元素:
a[s] #array([-1, 2, 3, 4])
我怎样才能拥有一个由 a[s] 中满足条件的元素组成的(numpy)数组,即为正(或负)? 结果应该是
np.ifcondition(a[s]>0, a[s]) #array([2, 3, 4])
它看起来微不足道,但我无法找到一个简单而浓缩的表达方式。我敢肯定口罩可以,但对我来说看起来并不直接。 但是,两者都不是:
a[a[s]>0]
a[s[a[s]>0]]
其实都是不错的选择。
【问题讨论】:
-
np.clip或np.where等大多数工具都保留了数组的原始大小,因此它们并不真正适合我的需要。