gpt4 book ai didi

python - 如何在 Numpy 中将索引数组转换为掩码数组?

转载 作者:IT老高 更新时间:2023-10-28 20:46:08 25 4
gpt4 key购买 nike

在给定范围的情况下,是否可以将索引数组转换为 1 和 0 数组?即 [2,3] -> [0, 0, 1, 1, 0],范围为 5

我正在尝试自动化这样的事情:

>>> index_array = np.arange(200,300)
array([200, 201, ... , 299])

>>> mask_array = ??? # some function of index_array and 500
array([0, 0, 0, ..., 1, 1, 1, ... , 0, 0, 0])

>>> train(data[mask_array]) # trains with 200~299
>>> predict(data[~mask_array]) # predicts with 0~199, 300~499

最佳答案

这是一种方法:

In [1]: index_array = np.array([3, 4, 7, 9])

In [2]: n = 15

In [3]: mask_array = np.zeros(n, dtype=int)

In [4]: mask_array[index_array] = 1

In [5]: mask_array
Out[5]: array([0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0])

如果掩码始终是范围,则可以消除index_array,并将1分配给切片:

In [6]: mask_array = np.zeros(n, dtype=int)

In [7]: mask_array[5:10] = 1

In [8]: mask_array
Out[8]: array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0])

如果您想要一个 bool 值数组而不是整数,请在创建时更改 mask_arraydtype:

In [11]: mask_array = np.zeros(n, dtype=bool)

In [12]: mask_array
Out[12]:
array([False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False], dtype=bool)

In [13]: mask_array[5:10] = True

In [14]: mask_array
Out[14]:
array([False, False, False, False, False, True, True, True, True,
True, False, False, False, False, False], dtype=bool)

关于python - 如何在 Numpy 中将索引数组转换为掩码数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25654748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com