可惜这两个答案都分析了问题,但没有给出直接的答案。让我们看看代码。
Z = np.array([1.0, 1.0, 1.0, 1.0])
def func(TempLake, Z):
A = TempLake
B = Z
return A * B
Nlayers = Z.size
N = 3
TempLake = np.zeros((N+1, Nlayers))
kOUT = np.zeros(N + 1)
for i in xrange(N):
# store the i-th result of
# function "func" in i-th item in kOUT
kOUT[i] = func(TempLake[i], Z)
该错误表明您将 kOUT(dtype:int) 的第 i 项设置为数组。这里 kOUT 中的每个项目都是一个 int,不能直接分配给另一个数据类型。因此,您应该在创建 kOUT 时声明它的数据类型。例如,像:
更改以下语句:
kOUT = np.zeros(N + 1)
进入:
kOUT = np.zeros(N + 1, dtype=object)
或者:
kOUT = np.zeros((N + 1, N + 1))
所有代码:
import numpy as np
Z = np.array([1.0, 1.0, 1.0, 1.0])
def func(TempLake, Z):
A = TempLake
B = Z
return A * B
Nlayers = Z.size
N = 3
TempLake = np.zeros((N + 1, Nlayers))
kOUT = np.zeros(N + 1, dtype=object)
for i in xrange(N):
kOUT[i] = func(TempLake[i], Z)
希望它可以帮助你。