2017-07-20 22 views
0

我想製作一個方形信號(作爲一個數組)。我想下面的代碼:函數定義:ValueError:具有多個元素的數組的真值是不明確的。使用a.any()或a.all()

import numpy as np 

x = np.linspace(0,2000, 100) 

def func(x): 
    x = np.where(x<500 or x>530, 0, 2) 
    return x 

y = func(x) 

不幸的是,它引發以下錯誤:

Traceback (most recent call last): 
    File "test.py", line 24, in <module> 
    y = func(x) 
    File "test.py", line 20, in func 
    x = np.where(x<500. or x>530, 0., 2.) 
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 

我不明白什麼是錯我的代碼。

回答

0

不能使用or在這裏。 or是一個Python函數,用於評估操作數的真實性,並基於該函數返回其中一個操作數。

但是,您可以使用邏輯或|),這是由numpy的自身來實現:

x = np.where((x < 500) | (x > 530), 0, 2)
+0

完美。非常感謝你。 – user8224662

相關問題