如何通过for循环将值附加到数组

时间:2019-10-31 20:52:33

标签: python arrays for-loop if-statement append

我有三套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仅包含一个值。

1 个答案:

答案 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次。 如果您向我们展示此代码的输出效果很好,那么我们可以为您提供更好的帮助。