python - numpy 广播 bool 索引

标签 python numpy array-broadcasting

如何使用 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/

相关文章:

python - 使用request python下载txt文件

python - python 中的 numpy var() 和 statistics variance() 有什么区别?

python - 根据条件的最后一次出现划分数据帧

python - 将 pandas 数据框转换为具有所有组合的字典

python - 具有高级混合索引的 Numpy 子数组分配

python - np.array 中的广播函数调用

python - 在 Hadoop 流中链接多个 mapreduce 任务

python - 如何清理这张图片(opencv-python)?

python - Numpy - 用向量行创建矩阵

python - 使用 NumPy,从 1D 和 2D 函数创建 3D 数组,无需循环