maxframe.tensor.in1d#
- maxframe.tensor.in1d(ar1: TileableType | ndarray, ar2: TileableType | ndarray | list, assume_unique: bool = False, invert: bool = False)[源代码]#
测试一维张量中的每个元素是否也存在于第二个张量中。
返回一个与 ar1 长度相同的布尔张量,当 ar1 中的元素在 ar2 中时为 True,否则为 False。
我们建议在新代码中使用
isin()而不是 in1d。- 参数:
ar1 ((M,) Tensor) -- 输入张量。
ar2 (array_like) -- 用于测试 ar1 中每个值的参考值。
assume_unique (bool, optional) -- 如果为 True,则假定输入张量中的元素都是唯一的,这可以加快计算速度。默认为 False。
invert (bool, optional) -- 如果为 True,则返回张量中的值会被反转(即 ar1 中存在于 ar2 的元素对应为 False,否则为 True)。默认为 False。
np.in1d(a, b, invert=True)等价于(但比)``np.invert(in1d(a, b))`` 更快。
- 返回:
in1d -- ar1[in1d] 中的值存在于 ar2 中。
- 返回类型:
(M,) Tensor, bool
参见
isin保留 ar1 形状的该函数版本。
numpy.lib.arraysetops包含多个用于对数组执行集合操作的函数的模块。
备注
in1d 可以看作是 Python 关键字 in 在一维序列上的逐元素函数版本。
in1d(a, b)大致等价于mt.array([item in b for item in a])。但如果 ar2 是集合或类似的(非序列)容器,这种想法就会失败:因为ar2会被转换为张量,在这些情况下asarray(ar2)是一个对象张量,而不是预期的包含值的张量。示例
>>> import maxframe.tensor as mt >>> test = mt.array([0, 1, 2, 5, 0]) >>> states = [0, 2] >>> mask = mt.in1d(test, states) >>> mask.execute() array([ True, False, True, False, True]) >>> test[mask].execute() array([0, 2, 0]) >>> mask = mt.in1d(test, states, invert=True) >>> mask.execute() array([False, True, False, True, False]) >>> test[mask].execute() array([1, 5])