Python Numpy数组索引
我在Numpy索引方面有点困难。脚本只给出最后一个数组的索引三次,而它应该给出三个不同数组的索引(脚本中的F_fit)。我相信这是一件简单的事情,但我还没有弄明白。3_phases.txt文件包含以下三行Python Numpy数组索引,python,numpy,Python,Numpy,我在Numpy索引方面有点困难。脚本只给出最后一个数组的索引三次,而它应该给出三个不同数组的索引(脚本中的F_fit)。我相信这是一件简单的事情,但我还没有弄明白。3_phases.txt文件包含以下三行 1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 代码如下: import numpy as np import matplotlib.pyplot as plt D = 12.96 n = np.ar
1 -1 -1 -1 1 1
1 1 1 -1 1 1
1 1 -1 -1 -1 1
代码如下:
import numpy as np
import matplotlib.pyplot as plt
D = 12.96
n = np.arange(1,7)
F0 = 1.0
x = np.linspace(0.001,4,2000)
Q = 2*np.pi*np.array([1/D, 2/D, 3/D, 4/D, 5/D, 6/D])
I = (11.159, 43.857, 26.302, 2.047, 0.513, 0.998)
phase = np.genfromtxt('3_phases.txt')
for row in phase:
F = (np.sqrt(np.square(n)*I/sum(I)))*row
d = sum(i*(np.sin(x*D/2+np.pi*j)/(x*D/2+np.pi*j))for i,j in zip(F,n))
e = sum(i*(np.sin(x*D/2-np.pi*j)/(x*D/2-np.pi*j))for i,j in zip(F,n))
f_0 = F0*(np.sin(x*D/2)/(x*D/2))
F_cont = np.array(d) + np.array(e) + np.array(f_0)
plt.plot(x,F_cont,'r')
#plt.show()
plt.clf()
D2 = 12.3
I2 = (9.4, 38.6, 8.4, 3.25, 0, 0.37)
Q2 = 2*np.pi*np.array([1/D2, 2/D2, 3/D2, 4/D2, 5/D2, 6/D2])
n2 = np.arange(1,7)
for row in phase:
F2 = (np.sqrt(np.square(n2)*I2/sum(I2)))*row
plt.plot(Q2,F2,'o')
#plt.show()
F_data = F2
Q_data = Q2
I_data = np.around(2000*Q2/(4-0.001))
I_data = np.array(map(int,I_data))
F_fit = F_cont[I_data]
print F_fit
R2 = (1-(sum(np.square(F_data-F_fit))/sum(np.square(F_data-np.mean(F_data)))))
任何帮助都将不胜感激
F_fit
是根据I_数据计算的,而I_数据又是根据Q2
计算的Q2
设置在循环之外,并且不依赖于行
-也许您的意思是I_数据
是F2
的函数?每次通过第一个循环时,您都在重新定义F_cont
。当您到达第二个循环(带有所有\u 2
值)时,您只能从最后一行访问F\u cont
要解决此问题,请将您的\u 2
定义移到第一个循环上方,只执行一次循环,然后您就可以访问每个F\u cont
,并且您的打印输出将不同
下面的代码与您的代码相同,除了上面描述的重新排列,以及我从上面实现了我的评论(在您的Q
中使用n/D
)
好的,F_cont有三个数组,我想从每个数组中选取值,为每个数组提供相同的I_数据索引。但是我只有最后一个数组的三倍值,而不是F的所有三个数组_cont@user2095624不,它不是,它是一个1d数组,F_cont.shape
是(2000,)
import numpy as np
import matplotlib.pyplot as plt
D = 12.96
n = np.arange(1,7)
F0 = 1.0
x = np.linspace(0.001,4,2000)
Q = 2*np.pi*n/D
I = (11.159, 43.857, 26.302, 2.047, 0.513, 0.998)
phase = np.genfromtxt('3_phases.txt')
D2 = 12.3
I2 = (9.4, 38.6, 8.4, 3.25, 0, 0.37)
Q2 = 2*np.pi*n/D2
n2 = np.arange(1,7)
for row in phase:
F = (np.sqrt(np.square(n)*I/sum(I)))*row
d = sum(i*(np.sin(x*D/2+np.pi*j)/(x*D/2+np.pi*j))for i,j in zip(F,n))
e = sum(i*(np.sin(x*D/2-np.pi*j)/(x*D/2-np.pi*j))for i,j in zip(F,n))
f_0 = F0*(np.sin(x*D/2)/(x*D/2))
F_cont = np.array(d) + np.array(e) + np.array(f_0)
plt.plot(x,F_cont,'r')
plt.clf()
F2 = (np.sqrt(np.square(n2)*I2/sum(I2)))*row
plt.plot(Q2,F2,'o')
F_data = F2
Q_data = Q2
I_data = np.around(2000*Q2/(4-0.001))
I_data = np.array(map(int,I_data))
F_fit = F_cont[I_data]
print F_fit
R2 = (1-(sum(np.square(F_data-F_fit))/sum(np.square(F_data-np.mean(F_data)))))