我有三套np.arrays。两个是我的数据集(U和t),第三个是每个数据点的数量(iarray)。我正在尝试制作三个新数组:一个包含一定间隔内(U)的值。第二个包含归因于(U)值的(t)值。第三个包含原始数组中这些值的数量(U和t都应相同)。
对于新的U和t,我得到两个大小不同的数组,而我的整数数组仅包含一个值。
所有尺寸均应相同。
我尝试设置一系列for循环,以检查U的值是否在特定间隔内。然后检查t中的值是否接近添加到新t数组中的最后一个点。如果一切顺利,则应在新数组的相同位置的原始数组中附加具有相同整数的值。
t = a[:,0]
U = a[:,1]
iarray=np.array(range(len(t)))
tpeak = np. array([])
Upeak = np. array([])
b=np.array([])
for i in range(len(t)):
if (np.size(b)==0) and 0.9<U[i]and U[i]<4 :
tpeak=np.append(tpeak,t[i])
for i in range(len(t)):
if (np.size(b)==0) and 0.9<U[i]and U[i]<4 :
Upeak=np.append(Upeak,U[i])
for i in range(len(t)):
if (np.size(b)==0) and 0.9<U[i]and U[i]<4 :
b=np.append(b,iarray[i])
for i in range(len(t)):
if U[i]>1 and U[i]<4 and 0.8<tpeak[-1]-t[i] :
tpeak=np.append(tpeak,t[i])
for i in range(len(t)):
if U[i]>1 and U[i]<4 and 0.8<tpeak[-1]-t[i] :
Upeak=np.append(Upeak,U[i])
for i in range(len(t)):
if U[i]>1 and U[i]<4 and 0.8<tpeak[-1]-t[i] :
b=np.append(b,iarray[i])
如前所述,我希望输出是相同大小的三个数组(Upeak,tpeak和b),而U peak比tpeak小1,而ipeak仅包含一个值。
答案 0 :(得分:0)
我不明白您的问题,顺便说一句,您可以使用列表压缩,这样您的代码将更加简洁。 代替:
tpeak = np. array([])
Upeak = np. array([])
b=np.array([])
for i in range(len(t)):
if (np.size(b)==0) and 0.9<U[i]and U[i]<4 :
tpeak=np.append(tpeak,t[i])
for i in range(len(t)):
if (np.size(b)==0) and 0.9<U[i]and U[i]<4 :
Upeak=np.append(Upeak,U[i])
for i in range(len(t)):
if (np.size(b)==0) and 0.9<U[i]and U[i]<4 :
b=np.append(b,iarray[i])
for i in range(len(t)):
if U[i]>1 and U[i]<4 and 0.8<tpeak[-1]-t[i] :
tpeak=np.append(tpeak,t[i])
for i in range(len(t)):
if U[i]>1 and U[i]<4 and 0.8<tpeak[-1]-t[i] :
Upeak=np.append(Upeak,U[i])
for i in range(len(t)):
if U[i]>1 and U[i]<4 and 0.8<tpeak[-1]-t[i] :
b=np.append(b,iarray[i])
您可以使用:
tpeak=[t[i] if (np.size(b)==0) and 0.9<U[i]and U[i]<4 for i in range(len(t)):]
或者也许尝试优化for循环。
for i in range(len(t)):
...
因为如您所见,您将这段代码重复了6次。 如果您向我们展示此代码的输出效果很好,那么我们可以为您提供更好的帮助。