Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.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 将元素的范围转换为向量?_Python_Numpy - Fatal编程技术网

Python 将元素的范围转换为向量?

Python 将元素的范围转换为向量?,python,numpy,Python,Numpy,我必须检查一个向量的特定部分,比如说从第8000个到最后一个的元素是否大于某个实数。由于我是Python的noob,我尝试了以下方法: if (vec[8000:Nout-1] > 2.): print('test ok!') 我将vec声明为vec=np.zeros(Nout)其中Nout==10000。因此,我填充了向量,在计算之后,我把我的数字放在里面 我收到的错误是: 包含多个元素的数组的真值不明确。使用a.any()或a.all() 我不知道是否或如何使用a.any您想

我必须检查一个向量的特定部分,比如说从第8000个到最后一个的元素是否大于某个实数。由于我是Python的noob,我尝试了以下方法:

if (vec[8000:Nout-1] > 2.):
    print('test ok!')
我将vec声明为
vec=np.zeros(Nout)
其中
Nout==10000
。因此,我填充了向量,在计算之后,我把我的数字放在里面

我收到的错误是:

包含多个元素的数组的真值不明确。使用a.any()或a.all()


我不知道是否或如何使用
a.any

您想这样使用它:

Nout = 10000
vec = np.zeros(Nout)

if (vec[8000:Nout-1].all() > 2):
    print('test ok!')

这将检查
vec
中从索引
8000
Nout-1
的所有元素是否大于2。

若要了解此问题,请尝试查看
(vec[8000:Nout-1]>2.)的输出。
。让我把你的例子简化一下


vec=np.array([1,2,3,4])
打印向量>2
[假,假,真,真]

因此,它给出了一个数组,其结果应用于列表中的每个元素。因此,当您在此调用if时,您会收到给定的错误消息,即数组的真值不明确

正如它所暗示的,这可以通过使用


将numpy作为np导入
如果np.all(向量>2):
打印('测试正常')

将numpy作为np导入
如果(向量>2)。全部()
打印('测试正常')
我个人更喜欢第一个实现,因为它清楚地表明这是一个numpy函数,但每个函数都有自己的功能

附加的 在numpy中,这种行为的合理之处在于对数组的某些部分执行操作,即。

vec=np.array([1,2,3,4])
向量[vec>2]=0
打印向量
[1, 2, 0, 0]