为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

qq_遁去的一_1 2021-05-14 14:12:29
我有以下形式的清单:[array([ 3755.16235032]), array([ 3755.16235032]), array([ 3755.16235032]), array([ 3755.16235032])]我想要一份表格清单:[3755.16235032, 3755.16235032, 3755.16235032, 3755.16235032]第一个列表的每个元素都是一个sci kit学习回归器的结果。我想要第二种格式,以便绘制分类器的预测。
查看完整描述

3 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

只是替代解决方案:鉴于x您的输入list,您可以使用ravel()NumPy作为


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

print (xlst)

或者您可以将其flatten()用作


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

print (xlst)

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


或者,如上面的答案中已经提到的list(),您也可以使用np.array(x).flatten().tolist()和来代替转换为列表np.array(x).ravel().tolist()


出于以下一种答案中的注释(感谢评论者)的启发,对本页列出的所有可能答案进行了一些时间分析(由于格式问题,很容易将其放在此处而不是注释中):


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


查看完整回答
反对 回复 2021-05-18
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

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


查看完整回答
反对 回复 2021-05-18
?
萧十郎

TA贡献1815条经验 获得超13个赞

通过使用 hstack


np.hstack(my_list).tolist()

Out[180]: [3755.16235032, 3755.16235032, 3755.16235032, 3755.16235032]


查看完整回答
反对 回复 2021-05-18
  • 3 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号