mars.tensor.in1d#
- mars.tensor.in1d(ar1: 联合[TileableType, ndarray], ar2: 联合[TileableType, ndarray, 列表], assume_unique: 布尔型 = False, invert: 布尔型 = False)[来源]#
测试一维张量的每个元素是否也存在于第二个张量中。
返回一个与 ar1 长度相同的布尔张量,当 ar1 的元素在 ar2 中时为 True,其他情况为 False。
我们建议在新代码中使用
isin()替代 in1d。- Parameters
- Returns
in1d – 值 ar1[in1d] 在 ar2 中。
- Return type
(M,) 张量, bool
另请参阅
isin该函数的版本可以保持ar1的形状。
numpy.lib.arraysetops模块包含多个用于在数组上执行集合操作的其他函数。
备注
in1d 可以被视为 python 关键字 in 的元素级函数版本,用于 1-D 序列。
in1d(a, b)大致相当于mt.array([item in b for item in a])。然而,当 ar2 是一个集合或类似的(非序列)容器时,这个想法就失效了:因为ar2被转换为一个张量,在这些情况下asarray(ar2)是一个对象张量,而不是预期的包含值的张量。示例
>>> import mars.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])