如何使用 numpy 广播重写这个 python 循环?
>>> values.shape
(50000,)
>>> tests.shape # booleans
(200, 50000)
>>> extracted = values[tests]
# FAILES
>>> extracted = values[test] for test in tests]
>>> extracted.shape
(200,)
>>> extracted[0].shape
(33,)
>>> extracted[1].shape
(468,)
花式/ bool 索引在这里不能像往常一样工作。
最佳答案
这样怎么样? 如果您只想快速获取每行的大小。
>>> values.shape
(50000,)
>>> tests.shape # booleans
(200, 50000)
>>> extracted = np.prod((tests,values))
>>> extracted.shape
(200,50000)
>>> rows, cols = extracted.nonzero()
>>> cols[rows==0].shape
(33,)
>>> cols[rows==1].shape
(468,)
关于python - numpy 广播 bool 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52354593/