将1x1维数组的列表转换为python中的浮点列表

时间:2018-08-02 22:46:56

标签: python arrays list pandas

我有一个列表的形式:

[array([ 3755.16235032]),
 array([ 3755.16235032]),
 array([ 3755.16235032]),
 array([ 3755.16235032])]

我要列出以下表格:

[3755.16235032,
 3755.16235032,
 3755.16235032,
 3755.16235032]

第一个列表的每个元素都是一个sci kit学习回归器的结果。我想要第二种格式,以便绘制分类器的预测。

3 个答案:

答案 0 :(得分:2)

使用np.concatenate避免手动迭代:

my_list = [np.array([ 3755.16235032]),
 np.array([ 3755.16235032]),
 np.array([ 3755.16235032]),
 np.array([ 3755.16235032])]

new_list = np.concatenate(my_list).tolist()

>>> new_list
[3755.16235032, 3755.16235032, 3755.16235032, 3755.16235032]

基准:

基于评论中的广泛讨论,这是我的基准测试:

my_list = [np.random.randn(1) for _ in range(100000)]

def concat_method(my_list=my_list):
    return np.concatenate(my_list).tolist()

def hstack_method(my_list=my_list):
    return np.hstack(my_list).tolist()

def flatten_method(my_list=my_list):
    return np.array(my_list).flatten().tolist()

def ravel_method(my_list=my_list):
    return np.array(my_list).ravel().tolist()

import timeit

>>> timeit.timeit(concat_method, number=100) / 100
0.025655772869977226
>>> timeit.timeit(hstack_method, number=100) / 100
0.1172302443100125
>>> timeit.timeit(ravel_method, number=100) / 100
0.041237239889997
>>> timeit.timeit(flatten_method, number=100) / 100
0.0412076849100049

答案 1 :(得分:2)

另一种替代解决方案:给定x是您的输入list,您可以使用NumPy的ravel()作为

xlst = list(np.array(x).ravel())
print (xlst)

或者您可以将flatten()用作

xlst = list(np.array(x).flatten())
print (xlst)

如果您只想将最终答案作为数组,则无需将list放在=之后。并且,如果您的输入x已经是numpy数组类型,请将np.array(x).ravel()替换为x.ravel()

或者,如上面的答案中已经提到的,您也可以使用list()np.array(x).flatten().tolist()

来代替使用np.array(x).ravel().tolist()转换为列表。

此页面上列出的所有可能的答案都会经过一些时间分析,这些答案受以下一种答案中的注释(感谢注释者)的启发(由于格式问题,很容易将其放在此处而不是注释中):< / p>

x = np.array([np.array([i]) for i in range(100000)])
%timeit np.concatenate(x).tolist()
%timeit np.hstack(x).tolist()
%timeit x.flatten().tolist()
%timeit x.ravel().tolist()

输出

10 loops, best of 3: 55.2 ms per loop
10 loops, best of 3: 155 ms per loop
100 loops, best of 3: 2.45 ms per loop
100 loops, best of 3: 2.29 ms per loop

答案 2 :(得分:1)

通过使用hstack

np.hstack(my_list).tolist()
Out[180]: [3755.16235032, 3755.16235032, 3755.16235032, 3755.16235032]