numpy多个布尔索引数组

我有一个要在其上使用布尔索引的数组,其中包含多个索引数组,每个数组产生一个不同的数组。示例:

w = np.array([1,2,3])
b = np.array([[False,True,True],[True,False,False]])

应按照以下方式返回内容:

[[2,3],[1]]

我假设由于包含True的单元格的数量在蒙版之间可以变化,所以我不能期望结果驻留在2d numpy数组中,但是我仍然希望有比迭代蒙版更优雅的东西将索引w的结果附加到第i个b掩码的位置。

我错过更好的选择了吗?

编辑:我接下来要做的下一步是对w[b]返回的每个数组求和,返回一个标量列表。如果这样可以使问题更容易解决,我也想知道。

l264496211 回答:numpy多个布尔索引数组

假设您想要一个numpy数组列表,则可以简单地使用一个理解:

public function Products(){
    return $this
        ->hasMany(ProductCatRel::class,'category')
        ->with(['Product' => function ($q) {
            $q->where('status',1)->orderBy('position');
        }])
        ->whereHas('Product',function($q) {
            $q->where('status',1);
        });
}

如果您的目标只是所使用的掩盖值的总和:

w = np.array([1,2,3])
b = np.array([[False,True,True],[True,False,False]])
[w[bool] for bool in b]

# [array([2,3]),array([1])]

np.sum(w*b) # 6

…由于np.sum(w*b,axis=1) # array([5,1]) # or b @ w 次,您的数字将为0,因此不会影响总和。

,

尝试一下:

[w[x] for x in b]

希望这会有所帮助。

本文链接:https://www.f2er.com/3001927.html

大家都在问