numpy.where()
调用方法
numpy.where(condition[, x, y])
各个参数意义:
condition
:类似数组的对象,布尔值
x, y
:类似数组的对象,给出值的地方,如果condition
为True
,从x
中选取值,condition
为False
,从y
中选取值。
有返回值,返回一个满足条件时取x
中对应的值,不满足条件时取y
中对应值的数组。
注意:这里的condition
,x
,y
只是为了表示以及说明时的必要,并不是真正意义上的关键字。
代码如下:
# -*- coding:utf-8 -*-
"""
author: 15025
time: 2020/12/30 20:27
software: PyCharm
"""
import numpy as np
class Debug:
@staticmethod
def mainProgram():
array = np.where([[True, False], [True, True]], [[1, 2], [3, 4]], [[9, 8], [7, 6]])
print("array的值为:")
print(array)
if __name__ == "__main__":
main = Debug()
main.mainProgram()
"""
array的值为:
[[1 8]
[3 4]]
"""
我们可以看到,这里的[[True, False], [True, True]]
相当于我们说的condition
,[[1, 2], [3, 4]]
相当于x
,[[9, 8], [7, 6]]
相当于y
,当我们的conditon
为False
时从y
中取出了数值8
,其他数值全部从x
中的对应位置取出。最终我们得到了上述结果。
这里我们额外给出一个使用np.where()函数获取数组中最大值对应位置的例子。
# -*- coding:utf-8 -*-
"""
author: 15025
time: 2020/12/30 20:27
software: PyCharm
"""
import numpy as np
class Debug:
@staticmethod
def mainProgram():
array = np.array([0, 1, 2, 3, 5, 4])
array_ = np.where(array == np.max(array))
print("array_的值为:")
print(array_)
if __name__ == "__main__":
main = Debug()
main.mainProgram()
"""
array_的值为:
(array([4], dtype=int64),)
"""
这里array_
的结果中存放的实际是当前数组中最大值所对应的索引值。
二维情况:
# -*- coding:utf-8 -*-
"""
author: 15025
time: 2020/12/30 20:27
software: PyCharm
"""
import numpy as np
class Debug:
@staticmethod
def mainProgram():
array = np.array([[0, 1, 2, 3, 5, 4, 5], [0, 1, 2, 3, 4, 5, 5]])
array_ = np.where(array == np.max(array))
print("array_的值为:")
print(array_)
if __name__ == "__main__":
main = Debug()
main.mainProgram()
"""
array_的值为:
(array([0, 0, 1, 1], dtype=int64), array([4, 6, 5, 6], dtype=int64))
"""
结果中的array([0, 0, 1, 1], dtype=int64)
表示数组中的y
索引值,array([4, 6, 5, 6], dtype=int64)
表示x
的索引值。
三维情况:
# -*- coding:utf-8 -*-
"""
author: 15025
time: 2020/12/30 20:27
software: PyCharm
"""
import numpy as np
class Debug:
@staticmethod
def mainProgram():
array = np.array([[[0, 1], [0, 1]],
[[1, 2], [1, 2]],
[[1, 3], [1, 3]]])
array_ = np.where(array == np.max(array))
print("array_的值为:")
print(array_)
if __name__ == "__main__":
main = Debug()
main.mainProgram()
"""
array_的值为:
(array([2, 2], dtype=int64), array([0, 1], dtype=int64), array([1, 1], dtype=int64))
"""
显而易见,三维结果同二维的情况类似,只是多了一个维度。
码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~