Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy数组:根据阈值切片y值数组,然后相应地切片x值数组_Python_Numpy - Fatal编程技术网

Python Numpy数组:根据阈值切片y值数组,然后相应地切片x值数组

Python Numpy数组:根据阈值切片y值数组,然后相应地切片x值数组,python,numpy,Python,Numpy,非常快速的问题,找不到这些关键字的答案。以下哪种方法更好 t = linspace(0,1000,300) x0 = generic_function(t) x1 = x0[x0>0.8] t1 = t[t>t[len(x0)-len(x1)-1]] 我使用@t1的操作给我的印象是非常不合算且效率低下。有指针吗?IIUC,您可以简单地重用切割数组。例如: >>> from numpy import arange, sin >>> t =

非常快速的问题,找不到这些关键字的答案。以下哪种方法更好

t = linspace(0,1000,300)    
x0 = generic_function(t)

x1 = x0[x0>0.8]
t1 = t[t>t[len(x0)-len(x1)-1]]

我使用@t1的操作给我的印象是非常不合算且效率低下。有指针吗?

IIUC,您可以简单地重用切割数组。例如:

>>> from numpy import arange, sin
>>> t = arange(5)
>>> t
array([0, 1, 2, 3, 4])
>>> y = sin(t)
>>> y
array([ 0.        ,  0.84147098,  0.90929743,  0.14112001, -0.7568025 ])
如前所述,您可以创建布尔数组:

>>> y > 0.8
array([False,  True,  True, False, False], dtype=bool)
然后您可以使用它来过滤
t
y

>>> t[y > 0.8]
array([1, 2])
>>> y[y > 0.8]
array([ 0.84147098,  0.90929743])

没有使用
len
或涉及单调性的假设。

更不用说它只起作用,因为我的值单调增加。实际上,我有一个后续问题。那叫什么?过滤、剪切还是切片?@RodericDay:我只是简单地称之为“索引”,只有一系列布尔值。numpy医生称之为。切片是带有冒号的东西,例如t[3:4,2:30:5],等等。