gpt4 book ai didi

python - 将 'in' 与 numpy.where() 一起使用的替代方法

转载 作者:行者123 更新时间:2023-11-28 23:04:43 25 4
gpt4 key购买 nike

假设我有一个包含两列的数组“foo”。第 0 列的值是 1 到 12,表示月份。第 1 列具有相应的测量值。如果我想创建一个包含 12 月、1 月和 2 月 (12,1,2) 的测量值掩码,我想我可以:

numpy.where(foo[:,1] in (12, 1, 2), False, True)

但看起来我聪明的“in (12, 1, 2)”不能作为 where() 的条件。它也不像 [12, 1, 2] 等那样工作......

还有其他聪明的方法吗?有没有更好的方法可以将所有 (12, 1, 2) 测量值收集到一个数组中?什么是 numpy 方式?

( reshape 数组是不可能的,因为每个月的测量数量都是不规则的)

最佳答案

我认为“in (12, 1, 2)”不起作用的原因是“in”之前的元素必须是单个元素。

但为此,numpy 具有函数 in1d ( documentation ) 对 numpy 数组进行“输入”。使用您的代码:

np.where(np.in1d(foo[:,0], [12, 1, 2]), False, True)

要用评论来完成答案:在这种情况下使用 where 是多余的,in1d 的输出可用于索引 foo:

foo[np.in1d(foo[:,0], [12, 1, 2])]

或为

foo[~np.in1d(foo[:,0], [12, 1, 2])]

注意:in1d 仅适用于 numpy 1.4 或更高版本。

关于python - 将 'in' 与 numpy.where() 一起使用的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7380490/

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