我看到讨论numpy的'where'功能到处都有,但我还是不明白。
我有数千个(x,y,z)向量的数组/列表(x,y和z,介于-1和1之间)我需要那些向量,例如,y是< .25,z> 0.90。而x不是== 0.
你会怎么做?
答案 0 :(得分:1)
np.where
有两种用法,一种用于1参数,另一种用于3.听起来你对1参数情况感兴趣,这只是np.nonzero
的另一个名称。 / p>
你提到vectors
,所以我假设你对1d数组感兴趣,而不是2d或更高的稍微复杂的情况。
以下是两个基本示例:
In [320]: np.where([1, 0, .2, 3, .222, 0])
Out[320]: (array([0, 2, 3, 4], dtype=int32),)
请注意,缺少1和5 - 这些是0的索引。
In [321]: np.nonzero([True, False, False, True])
Out[321]: (array([0, 3], dtype=int32),)
0和3是2个真值的索引。
涉及where
的{{1}}或nonzero
会减少查找该逻辑表达式的True值的索引,
y is < .25, z > .90. and x is not == 0
因此,如果您想知道(y < .25) & (z > .90) & (x != 0)
正在做什么,请首先查看where/nonzero
表达式的真/假值。它所做的只是告诉我们condition
表达式是真的。
where
现在正在处理数千个向量&#39;变得更加复杂。那些&#39;载体&#39;独立的,还是他们排的&#39; 2d阵列还是什么?
答案 1 :(得分:0)
数据如下(示例):
['17:54:03:421801', -0.714, 0.0114, 0.196]
['17:54:03:438803', 0.312, -0.0244, 0.312]
['17:54:03:444301', 0.137, -0.263, 0.908]
[...etc...]
时间戳不是真正的主要问题,但需要保留。一个小文件可能是10,000'行',每天有多个文件。所以,我需要'where'的指数,比方说,y是&lt; .25和z> 0.90。和x!= 0。
或者更一般地说:a1和a2以及a3。
应如何处理这个问题?怎么会这样做?时间比内存使用更重要。我想用Python做这个,但我应该跳到c,我的母语?
线索?思考?建议?