用來做磁盤陣列功能,我有這樣的功能:「如果」在Python
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做一個循環? 因爲如果我想呼籲兩個雙打Q(X,Y),該用於循環必須重新實現該案例...
編輯:(添加到這個問題,因爲它太長了但可能有助於他人回答。)
看起來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'和你想用它做什麼?如果它是一個數組 - 你想比較什麼?所有元素都必須滿足條件或..? – rplnt
r2是一個省略號的r^2 ... g(X,Y)應該是一個類似mgrid的值,但是在X,Y的每個點上都有值。 –
請告訴我們一個小例子''mgrid'是什麼對象:'print repr(mgrid)'。 – hochl