numpy.where()函数

numpy.where()调用方法

numpy.where(condition[, x, y])

各个参数意义:
condition:类似数组的对象,布尔值
x, y:类似数组的对象,给出值的地方,如果conditionTrue,从x中选取值,conditionFalse,从y中选取值。
有返回值,返回一个满足条件时取x中对应的值,不满足条件时取y中对应值的数组。
注意:这里的conditionxy只是为了表示以及说明时的必要,并不是真正意义上的关键字。

代码如下:

# -*- 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,当我们的conditonFalse时从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))
"""

显而易见,三维结果同二维的情况类似,只是多了一个维度。

码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

你可能感兴趣的:(python科学计算,python,numpy)