Python迭代不同大小的数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python迭代不同大小的数组相关的知识,希望对你有一定的参考价值。

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

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

“for i in range(b [0]):TypeError:只能将整数标量数组转换为标量索引。”

有人可以帮我理解如何正确迭代数组并执行计算吗?感谢您的时间。

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

以上是关于Python迭代不同大小的数组的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中迭代具有可变维度大小的 N 维矩阵

如何迭代Django中数组中的所有值

如何在UL中迭代使用appendChild和片段LI?

web代码片段

将不同大小的数组组合成一个对象?

迭代对象数组python