python - 检查数组中多个元素的相等性
问题描述
我是 Matlab 的 Python 新手。
我想从现有 numpy 数组的子集创建一个新变量,该变量基于与第三个 numpy 数组指定的某些条件的相等性,在这种情况下为 ID。
这适用于一个平等。
new_x = old_x[someID == 1]
但是,如果我尝试一次扩展几个等式,它就不再起作用了:
new_x = old_x[someID == 1:3]
理想情况下,我希望能够选择许多等式,例如:
new_x = old_x[someID == 1:3,7]
我可以遍历每个我想检查的数字,但有没有更简单的方法呢?
解决方案
import numpy as np
# for reproducible results
np.random.seed(42)
# toy data
old_x = np.random.randint(10, size=100)
# create new array by filtering on boolean mask
new_x = old_x[np.isin(old_x, np.r_[1:3,7])]
print(new_x)
输出
[7 2 7 7 7 2 1 7 1 2 2 2 1 1 1 7 2 1 7 1 1 1 7 7 1 7 7 7 7 2 7 2 2 7]
您可以np.r_
用类似的东西代替[1, 2, 7]
并使用它,如下所示:
new_x = old_x[np.isin(old_x, [1, 2, 7])]
此外,如果数组是一维的,您可以使用np.in1d
:
new_x = old_x[np.in1d(old_x, [1, 2, 7])]
print(new_x)
输出 (来自 in1d)
[7 2 7 7 7 2 1 7 1 2 2 2 1 1 1 7 2 1 7 1 1 1 7 7 1 7 7 7 7 2 7 2 2 7]
推荐阅读
- python - 我无法检查目录中可用的文件
- python - 使用用户输入更改文本文件中的特定单词
- vue.js - 是vue中的组件定义吗?如何通过查看代码来判断它是否是一个组件?
- python - 无法读取 Pandas 数据框中的 TweetId
- vba - 在 Chrome 中访问 DOM 嵌入的 PDF
- ios - 为什么 NavigationBar 背景颜色不会改变?
- python - Python for循环浮点数减法
- python - 如何为 Pandas 数据框中的不平衡面板生成滞后变量?
- azure - 将 delta Lake 文件从一个存储移动到另一个存储
- java - 我的应用程序抛出运行时异常并崩溃。我必须添加一些东西吗?