首页 > 解决方案 > 将 1x1 维数组列表转换为 python 中的浮点列表

问题描述

我有一个表格列表:

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

我想要一份表格清单:

[3755.16235032,
 3755.16235032,
 3755.16235032,
 3755.16235032]

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

标签: pythonarrayslistpandas

解决方案


用于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

推荐阅读