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条经验 获得超3个赞
一切都很好,但你必须改变比较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())
输出:假
添加回答
举报