我对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中扁平化浅列表