处理嵌套数组中的空数组

时间:2013-05-29 11:03:07

标签: python numpy nested-lists

我需要对每对数组进行dot product,其中有一些空子数组,在不同的索引中。 I,E

event1:
array([[  5.35375254e-07   6.40314998e-02], 0.159332022418, [],
       0.0396021990432, 0.00795516103045, 0.0457216188153, [],
       0.0331742073438], dtype=object)

event2:
array([[  5.97561615e-06   5.56173790e-02], 0.119262253938, [],
       0.161581488798, 0.00560146601083, 0.0735139212697, 0.0585291344263,
       0.177536950441], dtype=object)

正如您所看到的,我在这些数组中有一些空数组,因此当我使用点积时,这些空数组会使所有数据都为[]

首先,我尝试使用空数组并将它们更改为零,但是无法想到任何解决方案比循环遍历数组的每个元素并将空值更改为零更好。

有没有有效的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

实际上我使用numpy nonzero()方法解决了它。它返回非零/ non_empty元素的索引。即:

a = array([[5.97561615e-06, 0.055617379], 0.119262253938, [], 0.21321, []], dtype=object)

In [110]: a.nonzero()
Out[110]: (array([0, 1, 3]),)

non_empty= set(a.nonzero()[0])
complete_index = set(range(len(a)))
empty = list(complete - non_empty)
a[empty]= 0
In [130]: a
Out[130]: array([[5.97561615e-06, 0.055617379], 0.119262253938, 0, 0.21321, 0], dtype=object)