首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中正确索引到更改大小数组的索引

如何在python中正确索引到更改大小数组的索引
EN

Stack Overflow用户
提问于 2021-01-12 18:27:54
回答 1查看 54关注 0票数 0

这是我在开发一些东西时遇到的一个问题,这是一个很难表达的问题。所以最好用一个简单的例子:

假设您有4个随机数生成器,它们生成一个大小为4的数组:

代码语言:javascript
复制
[rng-0,  rng-1,   rng-2,   rng-3]
   |        |        |        | 
[val0,    val1,    val2,    val3]

我们的目标是遍历由这些RNGs填充的“代”数组,并迭代地屏蔽输出最大值的RNG。

因此,一个例子可能会从以下几个方面开始:

mask = [False, False, False, False], arr = [0, 10, 1, 3],所以我们会屏蔽rng-1。

然后,下一个迭代可能是:mask = [False, True, False, False], arr = [2, 1, 9] (在被问到之前,yes 必须缩小大小,每一个rng都屏蔽了)。在这种情况下,显然应该屏蔽rng-3 (例如mask[3] = True),但是由于arr现在的大小与mask不同,所以很难为设置掩码找到正确的索引(因为arr的最大值在arr的索引2,而相应的生成器是索引3)。随着更多的发电机被屏蔽,这个问题变得越来越困难(在我的例子中,我正在处理一个大小为30的面具)。

如果有帮助,下面是示例的python版本:

代码语言:javascript
复制
rng = np.random.RandomState(42)
mask = np.zeros(10, dtype=bool)  # True if generator is being masked
for _ in range(mask.size):
    arr = rng.randint(100, size=~mask.sum())
    unadjusted_max_value_idx = arr.argmax()
    adjusted_max_value_idx = unadjusted_max_value_idx + ????
    mask[adjusted_max_value_idx] = True

有什么好办法可以将arr中的最大值的索引映射到掩码中的相应索引吗?(即从unadjusted_max_value_idx迁移到adjusted_max_value_idx)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-12 19:11:23

代码语言:javascript
复制
#use a helper list
rng = np.random.RandomState(42)
mask = np.zeros(10, dtype=bool)  # True if generator is being masked
ndxLst=list(range(mask.size))
maskHistory=[]
for _ in range(mask.size):
    arr = rng.randint(100, size=(~mask).sum())
    unadjusted_max_value_idx = arr.argmax()
    adjusted_max_value_idx=ndxLst.pop(unadjusted_max_value_idx)
    mask[adjusted_max_value_idx] = True
    maskHistory.append(adjusted_max_value_idx)
print(maskHistory)
print(mask)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65689853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档