मूल फ़ंक्शन का मूल्यांकन करने के लिए पाइथन में कुछ कोड लिखना। मैं कुछ मूल्यों के साथ एक 2d सरणी मिल गया है और मैं उन मूल्यों से प्रत्येक के लिए समारोह लागू करते हैं और एक नया 2 डी सरणी प्राप्त करना चाहते हैं:टाइप एरर: 'फ़ंक्शन' ऑब्जेक्ट में कोई विशेषता नहीं है '__getitem__'
import numpy as N
def makeGrid(dim):
''' Function to return a grid of distances from the centre of an array.
This version uses loops to fill the array and is thus slow.'''
tabx = N.arange(dim) - float(dim/2.0) + 0.5
taby = N.arange(dim) - float(dim/2.0) + 0.5
grid = N.zeros((dim,dim), dtype='float')
for y in range(dim):
for x in range(dim):
grid[y,x] = N.sqrt(tabx[x]**2 + taby[y]**2)
return grid
import math
def BigGrid(dim):
l= float(raw_input('Enter a value for lambda: '))
p= float(raw_input('Enter a value for phi: '))
a = makeGrid
b= N.zeros ((10,10),dtype=float) #Create an array to take the returned values
for i in range(10):
for j in range (10):
b[i][j] = a[i][j]*l*p
return b
if __name__ == "__main__":
''' Module test code '''
size = 10 #Dimension of the array
newGrid = BigGrid(size)
newGrid = N.round(newGrid, decimals=2)
print newGrid
लेकिन सभी मैं मिल त्रुटि संदेश
Traceback (most recent call last):
File "sim.py", line 31, in <module>
newGrid = BigGrid(size)
File "sim.py", line 24, in BigGrid
b[i][j] = a[i][j]*l*p
TypeError: 'function' object has no attribute '__getitem__'
है
कृपया मदद करें।
कुछ सामान्य नहीं है इसका मतलब है आपके numpy कोड के बारे में टिप्पणी: 1) 'np' के रूप में numpy आयात करने की कोशिश करें, था टी numpy सम्मेलन है। 2) वेक्टर ऑपरेशंस का उपयोग करें, यानी: डबल लूप के बजाय 'ए = बी * एल * पी'। यह सैकड़ों या हजारों बार तेज़ होगा, और इसे पढ़ना आसान है। 3) 'सरणी [i] [j]' के रूप में numpy arrays को इंडेक्स न करें, इसके बजाय 'सरणी [i, j]' का उपयोग करें, यह बहुत तेज है, और लिखने के लिए छोटा है;)। संक्षेप में, एक numpy ट्यूटोरियल पढ़ें। – jorgeca