gpt4 book ai didi

python - 用其他数组给定的索引屏蔽一个数组

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:03 24 4
gpt4 key购买 nike

我有以下数组:

a = [10, 31, 30, 11, 17, 12, 22, 25, 85, 17, 21, 43]
b = [0, 1, 4, 6]

我想根据数组 b 给出的索引来屏蔽 a。这意味着获得:

c = [True, True, False, False, True, False, True, False, False, False, False, False]

最佳答案

In [524]: a=np.array([10, 31, 30, 11, 17, 12, 22, 25, 85, 17, 21, 43])
In [525]: b=np.array([0, 1, 4, 6])

要使 cb 索引处为真,只需使用:

In [526]: c=np.zeros(a.shape, bool)
In [527]: c[b]=True

In [528]: c
Out[528]:
array([ True, True, False, False, True, False, True, False, False,
False, False, False], dtype=bool)

然后您可以选择 a 的值:

In [529]: a[c]
Out[529]: array([10, 31, 17, 22])

但您也可以使用 b 选择它们:

In [530]: a[b]
Out[530]: array([10, 31, 17, 22])

但是 c 更适合删除那些,a[~c]np.delete(a,b) 做同样的事情。

生成c的其他数组方法是

np.in1d(np.arange(a.shape[0]),b)
np.any(np.arange(a.shape[0])==b[:,None],0)

因为我只是在另一个问题中讨论屏蔽数组,所以我可以在这里做同样的事情:

In [542]: np.ma.MaskedArray(a,c)
Out[542]:
masked_array(data = [-- -- 30 11 -- 12 -- 25 85 17 21 43],
mask = [ True True False False True False True False False False False False],
fill_value = 999999)

关于python - 用其他数组给定的索引屏蔽一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38214032/

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