展平NumPy数组列表?

发布于 2021-01-29 18:40:23

看来我有NumPy数组列表(type() = np.ndarray)格式的数据:

[array([[ 0.00353654]]), array([[ 0.00353654]]), array([[ 0.00353654]]), 
array([[ 0.00353654]]), array([[ 0.00353654]]), array([[ 0.00353654]]), 
array([[ 0.00353654]]), array([[ 0.00353654]]), array([[ 0.00353654]]), 
array([[ 0.00353654]]), array([[ 0.00353654]]), array([[ 0.00353654]]),
array([[ 0.00353654]])]

我正在尝试将其放入polyfit函数中:

m1 = np.polyfit(x, y, deg=2)

但是,它返回错误: TypeError: expected 1D vector for x

我认为我需要将数据拼合为:

[0.00353654, 0.00353654, 0.00353654, 0.00353654, 0.00353654, 0.00353654 ...]

我已经尝试了通常在列表列表上都可以使用的列表理解,但是按预期的方法却没有效果:

[val for sublist in risks for val in sublist]

最好的方法是什么?

关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    可以使用numpy.concatenate,顾名思义,它基本上将这样一个输入列表的所有元素连接到单个NumPy数组中,如下所示-

    import numpy as np
    out = np.concatenate(input_list).ravel()
    

    如果您希望最终输出为列表,则可以扩展解决方案,如下所示-

    out = np.concatenate(input_list).ravel().tolist()
    

    样品运行-

    In [24]: input_list
    Out[24]: 
    [array([[ 0.00353654]]),
     array([[ 0.00353654]]),
     array([[ 0.00353654]]),
     array([[ 0.00353654]]),
     array([[ 0.00353654]]),
     array([[ 0.00353654]]),
     array([[ 0.00353654]]),
     array([[ 0.00353654]]),
     array([[ 0.00353654]]),
     array([[ 0.00353654]]),
     array([[ 0.00353654]]),
     array([[ 0.00353654]]),
     array([[ 0.00353654]])]
    
    In [25]: np.concatenate(input_list).ravel()
    Out[25]: 
    array([ 0.00353654,  0.00353654,  0.00353654,  0.00353654,  0.00353654,
            0.00353654,  0.00353654,  0.00353654,  0.00353654,  0.00353654,
            0.00353654,  0.00353654,  0.00353654])
    

    转换为列表-

    In [26]: np.concatenate(input_list).ravel().tolist()
    Out[26]: 
    [0.00353654,
     0.00353654,
     0.00353654,
     0.00353654,
     0.00353654,
     0.00353654,
     0.00353654,
     0.00353654,
     0.00353654,
     0.00353654,
     0.00353654,
     0.00353654,
     0.00353654]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看