【发布时间】:2019-05-05 12:50:33
【问题描述】:
我有一个函数,我需要计算和可视化一系列参数。
这里是一个 Jupyter 代码示例:
%pylab
%matplotlib inline
%matplotlib notebook
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
def testFunc(x):
a = x[0] - x[1]
#if a < 0:
# a = 0
b = 2*(a**3)
return b
X = np.arange(100, 10000, 10)
Y = np.arange(3600, 3900, 10)
X, Y = np.meshgrid(X, Y)
Z = testFunc([X, Y])
fig = plt.figure(figsize=(12,8))
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm)
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()
但是我需要在函数中添加一个额外的逻辑:
if a < 0:
a = 0
当我取消注释这些行时,我得到了错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-15-273b40ed507a> in <module>()
20 Y = np.arange(3600, 3900, 10)
21 X, Y = np.meshgrid(X, Y)
---> 22 Z = testFunc([X, Y])
23
24 fig = plt.figure(figsize=(12,8))
<ipython-input-15-273b40ed507a> in testFunc(x)
11 a = x[0] - x[1]
12
---> 13 if a < 0:
14 a = 0
15
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
函数是否应用了“a”中的值数组?所以它不知道要与“0”比较哪个项目。
您能否推荐一种计算具有条件的函数的好方法 属性范围(可以可视化)?
【问题讨论】:
-
您的另一个隐藏且几乎不引人注意的问题也是重复的 - 使用
a[a<0] = 0。 -
哦,你在 17 小时前回复了那个帖子!今天是你的一天 :) 谢谢,要在那里阅读你的答案......
-
是的,真的很幸运,否则我永远不会找到重复的 - 那里的标题具有误导性,所以你的帖子是一个很好的路标。
标签: python numpy matplotlib