簡體   English   中英

將numpy多維數組轉換為list

[英]Converting a numpy multidimensional array to list

我對Python很新。 我查看了其他類似的主題,但他們沒有回答我想要做的事情。 結果如下:

coslist[1:4]
Out[94]: [array([[ 0.7984719]]), array([[ 0.33609957]]), 0]

這就是我要的:

coslist=[0.7984719,0.33609957,0]

我試過這個:

tolist=list(coslist)
tolist[1:3]
Out[98]: [array([[ 0.7984719]]), array([[ 0.33609957]])]

還有這個:

y=np.array(val).ravel().tolist()
y[1:4]
Out[99]: [array([[ 0.7984719]]), array([[ 0.33609957]]), 0]

如你所見,他們中的任何一個都是我想要的。 任何幫助將不勝感激。

有一個內置的numpy數組方法。

coslist = [numpy.array([[ 0.7984719]]), numpy.array([[ 0.33609957]]), 0]
coslist = [x.tolist()[0][0] if type(x)==numpy.ndarray else x for x in coslist]

type(coslst) # Should print <type 'list'>
lst # Should print a list of lists

首先,您需要逐項轉換列表中的np.arrays:

coslist=[np.array(item).tolist() for item in coslist]

然后我認為擺脫列表內部列表的唯一方法是通過迭代:

aux=[]
for x in coslist:
    if type(x)==list:
        for k in range(len(x[0])):
        aux.append(x[0][k])
    else:
        aux.append(x)
coslist=aux

請注意,我認為每個numpy數組都可以包含多個值。 因為如果你的列表只包含每個都有一個值的np.arrays,你可以這樣做:

coslist=[np.array(item).tolist() for item in coslist]
coslist=[x[0][0] if type(x)==list else x for x in coslist]

或者,如果你想特別快速回答你的問題,那將會:

coslist=[np.mean(coslist[k]) for k in range(len(coslist))]

多維數組: example = np.array([[1,2,3],[1,2],[1,4,5,6,7]])

  • 使用列表理解result = [j_i for item in a for j_i in item]

  • 使用lambda並減少import functools as ft result = ft.reduce(lambda x,y :x+y, a)

  • 使用itertools import itertools chain = itertools.chain(*a) list(chain)

參考: 在Python中展平淺表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM