1. np.where()

用法:np.where(condition, x, y) 和 np.where(condition)

返回:条件满足则返回x,不满足则返回y

只有条件 (condition),没有x和y时,则输出满足条件 (即非0) 元素的坐标 (等价于numpy.nonzero)。这里的坐标以tuple的形式给出,通常原数组有多少维,输出的tuple中就包含几个数组,分别对应符合条件元素的各维坐标。

  1. import numpy as np
  2. a = np.array([0, 1, 2, 4, 6, 7, 8, 9])
  3. print(a)
  4. [0 1 2 4 6 7 8 9]
  5. b = np.where(a > 5, 1, -1) # 大于5输出1,否则输出-1
  6. print(b)
  7. [-1 -1 -1 -1 1 1 1 1]
  8. c = np.where(a > 5) # 大于5输出
  9. print(c)
  10. (array([4, 5, 6, 7], dtype=int64),)

参考:https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html
https://www.cnblogs.com/massquantity/p/8908859.html

2. np.argwhere(a)

用法:np.argwhere(a)
返回:非0的数组元素的索引,其中a是待索引数组的条件

  1. import numpy as np
  2. x = np.arange(6).reshape(2,3)
  3. print(x)
  4. x=[[0 1 2]
  5. [3 4 5]]
  6. y = np.argwhere(x>1) #x所有元素中大于1的元素的索引,分别是第0行第2列...以此类推
  7. print(y)
  8. y=[[0 2]
  9. [1 0]
  10. [1 1]
  11. [1 2]]

参考:https://docs.scipy.org/doc/numpy/reference/generated/numpy.argwhere.html
https://blog.csdn.net/u012193416/article/details/79672514

3. argwhere与where的区别

  1. ar = np.array([1,2,3,4])
  2. b = np.argwhere(ar==4)
  3. print(type(b))
  4. print(b)
  5. #结果:
  6. <class 'numpy.ndarray'>
  7. [[3]]
  8. ar = np.array([1,2,3,4])
  9. b = np.where(ar==4)
  10. print(type(b))
  11. print(b)
  12. #结果:
  13. <class 'tuple'>
  14. (array([3], dtype=int64),)

————————————————
版权声明:本文为CSDN博主「peanut。」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42338058/article/details/90813715
3.
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_14812585/article/details/115293581