我是一个python初学者,我正在尝试编写一个计算格点最近邻居的函数,并收到以下错误:
晶格[x,(y - 1)%N] +晶格[x,(y + 1)%N]
TypeError:'function'对象没有属性' getitem '
我在网上找到的任何解决方案似乎与传递函数而不是其结果有关,但我看不出这是怎么回事。
这是我的代码:
def lattice(N):
lattice = np.random.rand(N,N)
lattice = np.where(lattice <= 0.5, 1,-1)
def nearestneighbours(lattice, x, y):
return lattice[(x - 1) % N, y] + lattice[(x + 1) % N, y] + \
lattice[x, (y - 1) % N] + lattice[x, (y + 1) % N]
答案 0 :(得分:2)
lattice
返回它创建的数组lattice
接受N
作为参数,但是
nearestneighbours
访问全局变量?
def lattice(n):
arr = np.random.rand(n, n)
arr = np.where(arr <= 0.5, 1, -1)
return arr
def nearestneighbours(arr, n, x, y):
return arr[(x - 1) % n, y] + arr[(x + 1) % n, y] + \
arr[x, (y - 1) % n] + arr[x, (y + 1) % n]
N = 5
lat = lattice(5)
print nearestneighbours(lat, N, 2, 3)
# 0