3 回答

TA貢獻1785條經驗 獲得超8個贊
您可以簡單地使用numpy.where()
.
你必須通過:
條件作為第一個參數
如果條件為真,則從中選擇值作為第二個參數
如果條件為假,則從中選擇值作為第三個參數
這樣,你的z()
函數就變成了:
def?z(x,?y): ????return?np.where(x?<?20, ????????????????????np.sin(x)?+?np.cos(y), ????????????????????np.tan(x*y))
生成的情節:

TA貢獻1872條經驗 獲得超4個贊
一切都很好,但你必須改變比較np.any(x<20)。這意味著如果 x 的任何元素大于 20。np.all如果您想在數組的每個元素都滿足條件時執行此操作,也可以使用 ,
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(0,50,100)
Y = np.linspace(0,50,100)
X, Y = np.meshgrid(X,Y)
def z(x,y):
if np.any(x < 20):
return np.sin(x) + np.cos(y)
else:
return np.tan(x * y)
Z = z(X,Y)
plt.contourf(X, Y, Z)
plt.xlabel('x')
plt.ylabel('y')
plt.colorbar()

TA貢獻1921條經驗 獲得超9個贊
numpy 數組中的真實性測試是按元素進行的,
import numpy as np
X = np.array([1,2,3,4])
print(X<3)
輸出:[真真假假]
您可以使用.all()或.any(),具體取決于您是否希望所有或任何元素滿足條件
print((X<3).all())
輸出:假
添加回答
舉報