基于另一个布尔数组,将 numpy 数组屏蔽为 select 特定行
Masking numpy arrays to select specific rows, based on another boolean array
假设我有这样一个数组:
my_arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
或像这样的二维数组:
my_arr = np.array([[1, 1, 11], [2, 1, 0], [3, 3, -1], ..., [10, 9, 0]])
然后我定义了一个数组
mask_arr = ([1, 1, 0, 0, 1, 0, 1, 1, 0, 1])
我想从掩码数组中得到一个新的数组,它是由行组成的,其中它们的索引mask_arr,元素等于“1”。
例如,第一个数组的结果如下:
[1, 2, 0, 0, 5, 0, 7, 8, , 10]
我试过了
my_arr[my_mask]
但是没有用。有没有不想写一个for循环来做到这一点的解决方案?
提前致谢
你的 mask_arr
看起来像整数类型,当你用整数数组切片时,数组被视为索引。所以
my_arr[[0,1,1]]
会给你[row0,row1,row1]
。正如您提到的,您想将 mask_arr
视为布尔值,然后您可以将其转换为布尔值:
my_arr[mask_arr.astype('bool')]
将提取与 mask_arr
中的 1
对应的行。
假设我有这样一个数组:
my_arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
或像这样的二维数组:
my_arr = np.array([[1, 1, 11], [2, 1, 0], [3, 3, -1], ..., [10, 9, 0]])
然后我定义了一个数组
mask_arr = ([1, 1, 0, 0, 1, 0, 1, 1, 0, 1])
我想从掩码数组中得到一个新的数组,它是由行组成的,其中它们的索引mask_arr,元素等于“1”。
例如,第一个数组的结果如下:
[1, 2, 0, 0, 5, 0, 7, 8, , 10]
我试过了
my_arr[my_mask]
但是没有用。有没有不想写一个for循环来做到这一点的解决方案?
提前致谢
你的 mask_arr
看起来像整数类型,当你用整数数组切片时,数组被视为索引。所以
my_arr[[0,1,1]]
会给你[row0,row1,row1]
。正如您提到的,您想将 mask_arr
视为布尔值,然后您可以将其转换为布尔值:
my_arr[mask_arr.astype('bool')]
将提取与 mask_arr
中的 1
对应的行。