Temel işlevi değerlendirmek için python'da bir kod yazmak. Bazı değerlere sahip bir 2d dizi var ve bu değerlerin her birine fonksiyonunu uygulamak ve yeni bir 2d diziyi almak istiyorum:TypeError: 'function' nesnesinin bir özniteliği yoktur '__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
Ama olsun tüm hata mesajı
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__'
olduğunu
Lütfen yardım edin.
bazı genel tipi olmadığı anlamına gelir numpy kodunuzla ilgili açıklamalar: 1) tpy olarak nip' olarak numpy içe aktarmayı deneyin. Uyuşma kuralları. 2) Vektör işlemlerini kullanın, örn .: çift döngü yerine 'a = b * l * p'. Yüzlerce veya binlerce kez daha hızlı olacak ve okunması daha kolay. 3) numpy dizileri dizi [i] [j] 'olarak dizinlemeyin, bunun yerine' array [i, j] 'yi kullanın, daha hızlı ve yazmayı kısaltın;). Özetlemek için, bir numpy öğretici okuyun. – jorgeca