Python 遍历不同大小的数组

Python iterating over array with different sizes

我正在尝试执行一个简单的计算并将输出放入一个数组中。

我首先设置值和数组,然后遍历数组并执行计算。最后,我尝试将计算出的输出放入一个用零填充的数组中。但是,我收到以下错误消息:

"for i in range(b[0]): TypeError: only integer scalar arrays can be converted to a scalar index."

有人可以帮助我了解如何正确地遍历数组并执行计算吗?谢谢你的时间。

import numpy as np


S = np.linspace(0,37,100)
T = np.array([5.,25.,30.])


delta = 25. - T
f = 1575e6

tt = T.reshape(3,1)
beta = S*tt
b = np.zeros(np.shape(beta)).reshape(100,3)

#Calculate and put into a 3x100 or 100x3 array
for i in range(b[0]):
      for j in range(T[0]):
            b[i,j]= 1.00 + 2.282e-5*S[i]*[j] - 7.638e-4*S[i] - 7.76e-6*S[i]**2 + 1.105e-8*S[i]**3

我有点不清楚你到底在做什么,但我能够调整你的代码并让它工作。首先,T[0] 是一个浮点数 (.5),不适用于您的迭代器。我假设您想遍历每个变量的长度以使 b 100x3,在这种情况下您应该使用 range(len(b[0])),或使用变量来定义 b[0] 的长度,并且也使用该变量来定义迭代器。

此外,在最后一行中,您将 j 放在方括号中,使其成为一个列表,如果您希望它作为数字相乘,则不需要这样做。你想让迭代器 (0,1,2) 乘以 S[i] 还是 T 中的特定值?我在下面写了前者,但如果你想要后者,请将 j 更改为 T[j]

下面的代码对我来说运行没有错误

import numpy as np


S = np.linspace(0,37,100)
T = np.array([5.,25.,30.])


delta = 25. - T
f = 1575e6

tt = T.reshape(3,1)
beta = S*tt
length_of_b_0=100
b = np.zeros(np.shape(beta)).reshape(length_of_b_0,3)

#Calculate and put into a 3x100 or 100x3 array
for i in range(length_of_b_0):
      for j in range(len(T)):
            b[i,j]= 1.00 + 2.282e-5*S[i]*j - 7.638e-4*S[i] - 7.76e-6*S[i]**2 + 1.105e-8*S[i]**3