将numpy多维数组转换为列表



我对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。列表中的数组,逐项:

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

那么我认为唯一摆脱list中的list中的list的方法就是通过迭代:

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。每个数组只有一个值,您可以这样做:

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和reduce import functools as ft result = ft.reduce(lambda x,y :x+y, a)

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

参考:在Python中扁平化浅列表

相关内容

  • 没有找到相关文章

最新更新