栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python中numpy.where的两种用法以及zip()的用法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python中numpy.where的两种用法以及zip()的用法

首先numpy.where(condition, x=None, y=None)可接收三个参数,condition表示待操作的numpy.array类型数组的逻辑判断, x和y是可选参数。

用法一:

当x,y为默认值时,对应用法一,此时where的作用为寻找在参数condition情况下数组内匹配的值,对于不同的输入,其返回python中numpy.where的两种用法以及zip()的用法的值是不同的。

        当输入(参数)是一维数组时,返回值是一维的索引,只有一组索引数组。

>>> import numpy as np
>>> a = np.array([5, 6, 7, 1, 2, 8, 9, 3, 4])
>>> a
array([5, 6, 7, 1, 2, 8, 9, 3, 4])
>>> np.where(a < 5)
(array([3, 4, 7, 8], dtype=int64),)

说明原数组a中索引值为3,4,7,8的数组元素他们的值是小于5的。

        当输入是二维数组时,返回的是匹配值的位置索引,但是注意会有两组索引数组表示返回值的位置。

import numpy as np
a = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])
b = np.where(a < 5)
print(b)

该段代码返回的结果为:

(array([0, 0, 0, 1], dtype=int64), array([0, 1, 2, 0], dtype=int64))

这两个返回的数组索引,分别对应满足情况的值在行列(维度)上的索引。

所以对应位置[0, 0],[0, 1],[0, 2], [1, 0] 上的元素值小于5。

如果此时想将返回值按坐标点的形式显示,就要用到Python中自带的zip函数

# 函数zip()用可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回这些元组组成的列表

import numpy as np
a = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])
b = np.where(a < 5)
for i in zip(*b):
    print(i)

输出:

(0, 0)
(0, 1)
(0, 2)
(1, 0)

用法二:

当x,y不为None时,对应用法二,此时函数类似二值化阈值处理

import numpy as np
a = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])
b = np.where(a < 5, 0, 10)  # 将符合condition的元素赋值为x 不符合赋值为y
print(b)

输出:

[[ 0  0  0]
 [ 0 10 10]
 [10 10 10]]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/360256.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号