【发布时间】:2011-10-27 14:59:26
【问题描述】:
我有这个功能:
def q(x,y):
r2 = (x/2.)**2 + (2.0*y)**2
if (r2 > 0.04):
return 0.
else:
return 1.5
我想使用类似
的名称来调用它from pylab import *
dl=0.025
X, Y = mgrid[-0.5:0.5:dl, -0.5:0.5:dl]
g(X,Y)
但显然这会导致比较错误。
这可以在不必为 X 和 Y 建立一个 for 循环的情况下完成吗? 因为如果我想为两个双打调用 q(x,y),则必须针对这种情况重新实现 for 循环...
编辑:(将其添加到问题中,因为它对于评论而不是答案来说太长了,但它可能会帮助其他人回答。)
看来pylab.mgrid 与numpy.mgrid 相同。
调整为numpy,此代码
import numpy
def q(x,y):
r2 = (x/2.)**2 + (2.0*y)**2
if (r2 > 0.04):
return 0.
else:
return 1.5
dl=0.025
X, Y = numpy.mgrid[-0.5:0.5:dl, -0.5:0.5:dl]
q(X,Y)
给出这个错误
if (r2 > 0.04):
ValueError: The truth value of an array with more than one element is
ambiguous. Use a.any() or a.all()
【问题讨论】:
-
我不知道 pylab 所以..
r2到底是什么,你想用它做什么?如果它是一个数组 - 你想比较什么?所有元素都必须满足条件或..? -
r2 is r^2 of an ellipsis... g(X,Y) 应该是一个类似 mgrid 但在 X,Y 的每个点上评估的值。
-
请告诉我们
mgrid是什么对象:print repr(mgrid)举个小例子。
标签: python numpy matplotlib