0

我需要dot product在每对有一些空子数组的数组上做不同的索引。IE

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)

正如你所看到的,我在这些数组中有一些空数组,所以当我做点积时,那些空数组使一切都变成[].

首先,我尝试了空数组并将它们更改为零,但想不出比遍历数组的每个元素并将空数组更改为零更好的解决方案。

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

4

1 回答 1

1

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

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)
于 2013-05-29T11:53:22.737 回答