python - 展平 NumPy 数组列表?

标签 python arrays numpy list-comprehension

看来我有 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]

最好的方法是什么?

最佳答案

您可以使用 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]

关于python - 展平 NumPy 数组列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33711985/

相关文章:

python - 多处理 : NULL result without error in PyObject_Call

python - python中的手动直方图

python - 从 pandas 中的逗号分隔字符串列中删除重复条目

python - 使用 numpy 进行 3D 图像压缩

java - 使用 3 种方法

c# - 将数组中的值与数组中之前的所有值进行比较的有效方法

python - 提前比较两个或多个 csv 文件

python - 在字典内迭代字典时,尽管有break语句,但不止一个键被修改

python - 如何在 Python 代码继续运行时持续闪烁 LED(或其他 while 循环)

python - 如何配置 Airflow dag 每天运行两次