当列表具有空白数组时如何将列表转换为数组

时间:2018-10-11 08:21:23

标签: python arrays numpy

我有一个清单

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)

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

1 个答案:

答案 0 :(得分:0)

这取决于您要代替空白数组的内容。 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数组的原因,并加以解决,以确保没有空白数组。