【问题标题】:How to convert a list to array when the list has blank array当列表有空白数组时如何将列表转换为数组
【发布时间】:2018-10-11 08:21:22
【问题描述】:

我有一个清单

A = [np.array([-25.2]), np.array([20.2]), np.array([15.3]), 
     np.array([]), np.array([]), np.array([-17.5]), np.array([19.3])]

如您所见,列表中有空白数组。当我使用时:

A1 = np.array(A)

它使它成为我无法在 spyder 中打开的对象。如果我使用:

A2 = np.concatenate(A1).astype(None)

它确实使它成为一个数组,但取消了空白数组。我应该如何将其转换为普通数组,同时保留空白数组。

【问题讨论】:

  • 我假设这些是 numpy 数组
  • 是的,它们是 numpy 数组
  • 空白应该如何在结果中表示?显示所需的结果。

标签: python arrays numpy


【解决方案1】:

这取决于你想用什么来代替空白数组。一个 numpy 数组必须具有相同的类型,所以你不能只有空白。您可以用 NaN 或零等填充。

此外,您别无选择,只能遍历数组。

k = [None] * len(a)
for i,x in enumerate(a):
    if len(x) == 0:
        k[i] = np.nan
    else:
        k[i] = x

a = np.asarray(k, dtype=float)

我建议您首先查看生成 a 数组的原因并修复它,以免出现空白数组。

【讨论】:

  • 空白数组生成是某些可能存在的预处理的一部分。我不能忽略空白数组。我会试试你的方法。谢谢
  • 如果回答有帮助,请考虑接受
  • 我运行你的代码并得到一个错误'int'类型的对象没有len()'
  • 道歉,已修复