Numpy Python:为什么是how/where/where np.where

Numpy Python:为什么是how/where/where np.where,numpy,where,Numpy,Where,我到处都在讨论numpy的“where”功能,但我还是不明白 我有数千个(x,y,z)向量(x,y和z,介于-1和1之间)的数组/列表。我需要这些向量,比如说,y是.90。x不是==0 您将如何做到这一点?有两种用法使用np。其中,一种用法有1个参数,另一种用法有3个参数。听起来您对1参数的情况很感兴趣,它只是np.nonzero的另一个名称 您提到了向量,所以我假设您对1d数组感兴趣,而不是2d或更高版本的稍微复杂一点的情况 以下是两个基本示例: In [320]: np.where([1,

我到处都在讨论numpy的“where”功能,但我还是不明白

我有数千个(x,y,z)向量(x,y和z,介于-1和1之间)的数组/列表。我需要这些向量,比如说,y是<0.25,z>.90。x不是==0


您将如何做到这一点?

有两种用法使用
np。其中
,一种用法有1个参数,另一种用法有3个参数。听起来您对1参数的情况很感兴趣,它只是
np.nonzero
的另一个名称

您提到了向量,所以我假设您对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个真值的索引

A
其中
或涉及
y的
非零
为<.25,z>.90。x不是==0
减少了查找该逻辑表达式真值的索引

(y < .25) & (z > .90) & (x != 0)
现在,处理“数千个向量”变得更加复杂。这些“向量”是独立的,还是2d数组的“行”还是什么?

数据如下(示例):

时间戳并不是一个主要的问题,但它需要保留。一个小文件可能有10000行,并且每天有多个文件。所以,我需要“where”的索引,比如y小于.25,z大于.90。还有x!=0

或者更一般地说:其中a1、a2和a3

应如何处理这一问题?谁会拿这个做什么?时间比内存使用更重要。我想用Python来做这件事,但我应该跳转到我的母语c吗


线索?思想?建议?

您能提供一个正确类型和形状的所需输入/输出示例吗?
In [327]: x=np.linspace(-2,2,5); y=np.linspace(0,1,5); z=np.linspace(.5,1,5)
In [328]: (y<.25)&(z>.9)&(x!=0)
Out[328]: array([False, False, False, False, False], dtype=bool)
In [329]: (y<.25)|(z>.9)|(x!=0)
Out[329]: array([ True,  True, False,  True,  True], dtype=bool)
In [330]: np.where((y<.25)|(z>.9)|(x!=0))
Out[330]: (array([0, 1, 3, 4], dtype=int32),)
['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...]