返回顶部
首页 > 资讯 > 后端开发 > Python >Python np.where()的详解以及代码应用
  • 855
分享到

Python np.where()的详解以及代码应用

2024-04-02 19:04:59 855人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录np.where共两种用法:附:np.where()多条件用法总结np.where共两种用法: 第一种np.where(condition

np.where共两种用法:

第一种np.where(condition, x, y),即condition为条件,当满足条件输出为x,不满足条件则输出y.直接上代码:

a = np.arange(10)
//array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print(np.where(a > 5, 1, -1))
//array([-1, -1, -1, -1, -1, -1,  1,  1,  1,  1]) 

上面的挺好理解的,但是官网的例子不是太好理解,如下所示:

np.where([[True,False], [True,True]],   
			 [[1,2], [3,4]],
             [[9,8], [7,6]])
// 输出 array([[1, 8], [3, 4]])

可以这么理解,第一行的bool值表示条件,它表示是否取值的意思,首先看[True,False],即第一的True值表示第一行取数值第一行的[1, 2]中的1,而不取下面的9,False表示不取第一行[1, 2]中的2,而取第二行[9, 8]中的8.下面同理得[3, 4].
为了方便理解再举一个例子:

a = 10
>>> np.where([[a > 5,a < 5], [a == 10,a == 7]],
             [["chosen","not chosen"], ["chosen","not chosen"]],
             [["not chosen","chosen"], ["not chosen","chosen"]])

//array([['chosen', 'chosen'], ['chosen', 'chosen']], dtype='<U10')

第一行a>5True,则取第一行的第一个值,a<5取第二行的第二个值,下面也同理.

理解完第一种方法后,再来看np.where第二种方法:

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

>>> a = np.array([2,4,6,8,10])
>>> np.where(a > 5)			
//(array([2, 3, 4]),)   返回索引值
>>> a[np.where(a > 5)]  			
//array([ 6,  8, 10]) 返回元素值,即a[索引]

举一个代码例子,也是我遇到的:

a = array([[0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [1., 0.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [1., 0.],
  	       [1., 0.],
  	       [0., 1.],
  	       [0., 1.],
  	       [1., 0.],
  	       [0., 1.],
  	       [1., 0.],
  	       [0., 1.]])
np.where(a == 1)
//(array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
//        17, 18, 19], dtype=int64),
// array([1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1],
//       dtype=int64))

返回的两个array数组分表示第几行的第几个值为1,所以结果中的第一个array数组表示行索引,第二个array数组表示列索引也就是1的碎银索引.

附:np.where()多条件用法

1.np.where(condition,x,y) 当where内有三个参数时,第一个参数表示条件,当条件成立时where方法返回x,当条件不成立时where返回y

2.np.where(condition) 当where内只有一个参数时,那个参数表示条件,当条件成立时,where返回的是每个符合condition条件元素的坐标,返回的是以元组的形式

3.多条件时condition,&表示与,|表示或。如a = np.where((0<a)&(a<5), x, y),当0<a与a<5满足时,返回x的值,当0<a与a<5不满足时,返回y的值。注意x, y必须和a保持相同尺寸

例如:

import numpy as np

data = np.array([[0, 2, 0],
                           [3, 1, 2],
                           [0, 4, 0]])
new_data = np.where((data>= 0) & (data<=2), np.ones_like(data), np.zeros_like(data))
print(new_data)

结果:

         [[1 1 1]
          [0 1 1]
          [1 0 1]]

从中可以看出data中每个元素只要满足data>=0并且data<=2, 满足就返回np.ones_like(data)对应坐标的值,不满足就返回np.zeros_like(data)对应坐标的值。当然x , y可以换成其他的值,只要与条件相同尺寸就可以。

总结

到此这篇关于python np.where()详解以及代码应用的文章就介绍到这了,更多相关np.where()详解及应用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python np.where()的详解以及代码应用

本文链接: https://lsjlt.com/news/120174.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python np.where()的详解以及代码应用
    目录np.where共两种用法:附:np.where()多条件用法总结np.where共两种用法: 第一种np.where(condition...
    99+
    2024-04-02
  • Android Style.xml的应用详解及代码实现
    Style.xml的妙用 Style.xml之于Android犹如css之于Jsp 妙用 <?xml version="1.0" encoding="ut...
    99+
    2022-06-06
    XML Android
  • Python heapq使用详解及实例代码
    Python heapq 详解 Python有一个内置的模块,heapq标准的封装了最小堆的算法实现。下面看两个不错的应用。 小顶堆(求TopK大) 话说需求是这样的: 定长的序列,求出TopK大的数据。...
    99+
    2022-06-04
    详解 实例 代码
  • Python 字典的使用详解及实例代码
    目录字典长什么样字典内能放什么访问字典内容修改字典内容删除字典数据字典内置函数字典是Python实现散列表数据结构的形式,表现映射的关系,一对一。 字典长什么样 {}这是一个空字典,...
    99+
    2024-04-02
  • Spearman 相关性分析法,以及python的完整代码应用
    Spearman 相关性分析法 简介 Spearman 相关性分析法是一种针对两个变量之间非线性关系的相关性计算方法,同时,它不对数据的分布进行假设。该方法的基本思想是将两个(也可以多个)变量的值...
    99+
    2023-09-09
    python pandas 数据分析
  • 线段树详解以及C++实现代码
    目录应用场景算法思想查询操作修改操作算法实现建树查询修改总结应用场景 假设有这样的问题:有n个数,m次操作,操作分为:修改某一个数或者查询一段区间的值 分析下,如果针对数组元素的修改...
    99+
    2024-04-02
  • Python环境的实际应用方案以及代码怎么编写
    这篇文章将为大家详细讲解有关Python环境的实际应用方案以及代码怎么编写,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。下载Python源码解压,编译安装,不需要特殊操作。安装sh setu...
    99+
    2023-06-17
  • python 队列详解及实例代码
    队列特性:先进先出(FIFO)——先进队列的元素先出队列。来源于我们生活中的队列(先排队的先办完事)。 Queue模块最常与threading模块一起构成生产-消费者模型,提供了一个适用于多线程编程的先进...
    99+
    2022-06-04
    队列 详解 实例
  • Python文件相关应用方案以及代码怎么编写
    Python文件相关应用方案以及代码怎么编写,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python  文件import os  im...
    99+
    2023-06-17
  • 详解B+树的原理及实现Python代码
    B+树是自平衡树的高级形式,其中所有值都存在于叶级中。B+树所有叶子都处于同一水平,每个节点的子节点数量≥2。B+树与B树的区别是各节点在B树上不是相互连接,而在B+树上是相互连接的。 B+树多级索引结构图 B+树搜索规则 1、从...
    99+
    2024-01-24
    B树的概念
  • C语言goto的应用举例以及详解
    目录一、goto语句的简单解释二、goto语句简单引用举例三、goto语句的实际引用场景总结一、goto语句的简单解释   goto语句其实就是一个跳转语句。C语言中提供了...
    99+
    2022-11-13
    c语言goto用法举例 c语言goto语句怎么用 C语言中的goto
  • Python字符串常用方法以及其应用场景详解
    目录前言一、最大化最小化方法二、统计次数方法三、去掉左右侧字符方法四、字符串分隔方法五、字符串替换方法六、字符串拼接方法七、判断是否为数字的方法八、判断是否为空格的方法九、判断前缀和...
    99+
    2024-04-02
  • 十个常用的损失函数解释以及Python代码实现
    什么是损失函数?损失函数是一种衡量模型与数据吻合程度的算法。损失函数测量实际测量值和预测值之间差距的一种方式。损失函数的值越高预测就越错误,损失函数值越低则预测越接近真实值。对每个单独的观测(数据点)计算损失函数。将所有损失函数(loss ...
    99+
    2023-05-14
    算法 Python 损失函数
  • java代码大全及详解(Java 常用代码汇总)
    1. 字符串有整型的相互转换 String a = String.valueOf(2); //integer to numeric stringint i = Integer.parseInt(a); //numeric string to...
    99+
    2023-09-07
    java jvm 开发语言
  • Python字典简介以及用法详解
    #!/usr/bin/env python # -*- coding:utf-8 -*- """ 老规矩以下方法环境2.7.x,请3.x以上版本的朋友记得格式print(输出内容放入括号内) 字典的...
    99+
    2022-06-04
    字典 详解 简介
  • Python 实现随机数详解及实例代码
    Python3实现随机数 random是用于生成随机数的,我们可以利用它随机生成数字或者选择字符串。 random.seed(x)改变随机数生成器的种子seed。 一般不必特别去设定seed,...
    99+
    2022-06-04
    随机数 详解 实例
  • Python运算符重载详解及实例代码
    Python运算符重载 Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同。鉴于它的特殊性,今天就来讨论一下Python运算符重载。 Pyth...
    99+
    2022-06-04
    详解 运算符 实例
  • Python 爬虫多线程详解及实例代码
    python是支持多线程的,主要是通过thread和threading这两个模块来实现的。thread模块是比较底层的模块,threading模块是对thread做了一些包装的,可以更加方便的使用。 虽然...
    99+
    2022-06-04
    爬虫 多线程 详解
  • Python实现屏幕截图的代码及函数详解
    废话不多说,先给大家看下python实现屏幕截图的代码,具体代码如下所述: from selenium import webdriver import time def capture(url, sav...
    99+
    2022-06-04
    截图 详解 函数
  • Python中super()的理解以及应用场景实例
    目录一、前言二、什么是super三、super的常用使用场景总结一、前言 最近有粉丝向我咨询super相关的问题,说网上搜索到的教程不够通俗易懂,看了之后还是不太理解。所以在这里基...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作