numpy中关于where函数的用法
作者:坝坝头伯爵
这篇文章主要介绍了numpy中关于where函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
关于where函数用法
在我的理解中np.where函数有三个用法
1. np.where()[0] 和 np.where()[1]
where在我的理解中是一个寻找数组中某个元素的函数
在此用法中np.where()[0] 表示行索引,np.where()[1]表示列索引
具体如下:
import numpy as np array = np.arange(12).reshape(3,4) print('array:', array) print('np.where(array > 5):', np.where(array > 5)) print('array[np.where(a > 5)]:', array[np.where(array > 5)]) print('np.where(array > 5)[0]:', np.where(array > 5)[0]) print('np.where(array > 5)[1]:', np.where(array > 5)[1]) print(array[np.where(array > 5)[0], np.where(array > 5)[1]]) array: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] np.where(array > 5): (array([1, 1, 2, 2, 2, 2]), array([2, 3, 0, 1, 2, 3])) array[np.where(array > 5)]: [ 6 7 8 9 10 11] np.where(array > 5)[0]: [1 1 2 2 2 2] np.where(array > 5)[1]: [2 3 0 1 2 3] [ 6 7 8 9 10 11]
2. np.where(condition, x, y)
满足condition 这个条件的输出x,不满足输出y。
如下所示:
小于2的数改为0,否则改为10
import numpy as np t2=np.array([[1,2,3],[1,2,3]]) print(np.where(t2<2,0,10)) [[ 0 10 10] [ 0 10 10]]#输出
3. np.where(condition)
只有条件 (condition),没有x和y,则输出满足条件 (即非0) 元素的坐标 (类似于numpy.nonzero)。
举个简单的例子:
import numpy as np t2=np.array([[1,2,3],[1,2,3]]) print(np.where(t2<2)) (array([0, 1], dtype=int64), array([0, 0], dtype=int64)) #输出
所以 np.where会输出每个符合要求的元素的对应的坐标
需要注意的一点是:
输入的不能直接是list,需要转为array或者为array才行。
比如range(10)和np.arange(10)后者返回的是数组,使用np.where才能达到效果。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。