Arrays 用循环填充数据数组的行和列
我从Python开始,我有一个关于“for”循环的基本问题 我有两个数组,其中包含相同变量的值:Arrays 用循环填充数据数组的行和列,arrays,loops,numpy,for-loop,Arrays,Loops,Numpy,For Loop,我从Python开始,我有一个关于“for”循环的基本问题 我有两个数组,其中包含相同变量的值: A = data_lac[:,0] 在第一个数组中,我有面积值,在第二个数组中,我有平均深度值。 我想找到一种方法,用不同的参数值自动计算。方程式如下: g= (np.sqrt(A/pi))/n 这里我可以计算每一行的“g”。现在我想要一个不同值为“n”的循环。我这样做: i=0 while i <= len(A)-1: for n in ran
A = data_lac[:,0]
在第一个数组中,我有面积值,在第二个数组中,我有平均深度值。
我想找到一种方法,用不同的参数值自动计算。方程式如下:
g= (np.sqrt(A/pi))/n
这里我可以计算每一行的“g”。现在我想要一个不同值为“n”的循环。我这样做:
i=0
while i <= len(A)-1:
for n in range(2,6):
g[i] = (np.sqrt(A[i]/pi))/n
i += 1
break
g有5列,每列用不同的“n”计算
任何提示都会非常有用,
谢谢
更新守则:
data_lac=np.zeros((106,7))
data_lac[:,0:2]=np.loadtxt("/home...", delimiter=';', skiprows=1, usecols=(0,1))
data_lac[:,1]=data_lac[:,1]*0.001
#Initialisation
A = data_lac[:,0]
#example for A with 4 elements
A=[2.1, 32.0, 4.6, 25]
g = np.zeros((len(A),))
我相信您在两个循环中共享索引。在内部for循环(索引为n)中增加i(上部while循环的索引) 我猜你有一个(1维数组),你想产生一个大小为(Len(A,5))的G(2维数组) 我不确定我是否完全理解您的需求输出,但我相信您希望:
i=0
while i <= len(A)-1:
for n in range(2,6):
g[i][n-2] = (np.sqrt(A[i]/pi))/n # n-2 is to get first index as 0 and last as 4
i += 1 # notice the increace of the i is for the upper while loop
break
您定义它的方式(没有4)导致它是1-dim数组而不是2-dim请注意,如果A的长度为2(示例),您将尝试访问for循环中的[4]->这会导致错误-发生这种情况是因为您在for循环中增加了i,而忽略了在while循环上部进行的检查如果我很了解您,这两个循环之间存在冲突,因为我没有检查“while”循环的条件?这就是为什么在数组中会越界。你希望G是2维阵列,并且具有(len(A),5)维吗?好的,我明白了!是的,准确地说,对于每个不同的n个行号对应的行的帮助,您的猜测是正确的,我想根据“n”计算不同的G值。我尝试了您的解决方案,但仍有一个错误:“numpy.float64”对象不支持项分配。可能这与数组g有关,数组g可能是这样写的:g[[i],[n-2]]?我对python不太熟悉,但您是如何定义g的?它应该是这样的:G=[[0代表范围内的x(len(A))]代表范围内的y(2,6)],我也会这么说。我把G定义为2D数组,你们可以用更多的代码更新这个问题吗(包括G定义和数组内容的示例)->我写的脚本运行得很好更新答案-用4英寸G的定义,我可以用你们的示例输入
i=0
while i <= len(A)-1:
for n in range(2,6):
g[i][n-2] = (np.sqrt(A[i]/pi))/n # n-2 is to get first index as 0 and last as 4
i += 1 # notice the increace of the i is for the upper while loop
break
g = np.zeros((len(A),4), dtype=float)