Python 将元素的范围转换为向量?
我必须检查一个向量的特定部分,比如说从第8000个到最后一个的元素是否大于某个实数。由于我是Python的noob,我尝试了以下方法: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您想
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]