繁体   English   中英

用第一个的布尔值切片两个numpy数组

[英]Slicing two numpy arrays by Boolean of the first

假设我有两个长度相同的numpy数组。

a = array([1, 0, 1, 1, 0, 1])

b = array([0, 1, 1, 1, 0, 0])

我可以对a进行切片,以便仅获得1的值。

a_slice = array([1, 1, 1, 1]).

我将如何基于a = 1的位置类似地切片b?

我会需要

b_slice = array([0, 1, 1, 0]).

您可以在第一个数组中切片= = 1的位置。 通过使用a == 1

import numpy as np

a = np.array([1, 0, 1, 1, 0, 1])
b = np.array([0, 1, 1, 1, 0, 0])

_slice = b[a == 1]
print(_slice)

您可以使用a[a == 1]来获得所有这些,但这似乎用处不大。

您可以将adtype bool

b[a.astype(bool)]
# array([0, 1, 1, 0])

您可以使用np.where

mask = np.where(a == 1)

a_slice = a[mask]

你得到

array([1, 1, 1, 1])


b_slice = b[mask]

你得到

array([0, 1, 1, 0])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM