【知识点】np.where()用法

这篇具有很好参考价值的文章主要介绍了【知识点】np.where()用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、基本知识

二、具体实例

1.np.where(condition,x,y)

(1)示例1:

(2)示例2:

(3)示例3:

2. np.where(condition)

总结


一、基本知识

np.where 函数是三元表达式 x if condition else y 的向量化版本,它有两种用法:

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

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


二、具体实例

1.np.where(condition,x,y)

(1)示例1:

有两个数值数组和一个布尔数组。当布尔数组为True 时,输出 xarr 的值,否则输出 yarr 的值

代码:

import numpy as np

xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])
yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])
carr = np.array([True, False, True, True, False])

result = np.where(carr, xarr, yarr)
print(result)

结果:

[1.1 2.2 1.3 1.4 2.5]

(2)示例2:

np.where的第二个和第三个参数不需要是数组,也可以是标量。where在数据分析中的一个典型用法是根据一个数组来生成一个新的数组。

假设有一个随机生成的矩阵数据,并且想将其中的正值都替换为2,负值都替换为-2

代码:

import numpy as np

arr = np.random.randn(4, 4)
print(f'arr is {arr}')

brr = np.where(arr > 0, 2, -2)
print(f'brr is {brr}')

结果:

arr is [[ 0.25269699  0.65883562 -0.25147374 -1.39408775]
 [-0.53498966 -0.97424514 -1.13900344  0.53646289]
 [ 1.51928884  0.80805854 -0.82968494  0.82861136]
 [ 0.09549692  0.59623201  0.50521756  1.648034  ]]
brr is [[ 2  2 -2 -2]
 [-2 -2 -2  2]
 [ 2  2 -2  2]
 [ 2  2  2  2]]

(3)示例3:

也可以使用np.where 将标量和数组联合:

仅替换正值为2:

代码:

import numpy as np

arr = np.random.randn(4, 4)
print(f'arr is {arr}')

brr = np.where(arr > 0, 2, arr)
print(f'brr is {brr}')

结果:

arr is [[ 0.30064659 -0.5195743   0.05916467  0.58790562]
 [ 1.0921678  -0.30010407 -0.43318393  0.60455133]
 [-0.35091718  0.01738908 -0.3067928  -0.0439254 ]
 [ 0.59166385  1.04319898 -0.73044529  0.10357739]]
brr is [[ 2.         -0.5195743   2.          2.        ]
 [ 2.         -0.30010407 -0.43318393  2.        ]
 [-0.35091718  2.         -0.3067928  -0.0439254 ]
 [ 2.          2.         -0.73044529  2.        ]]

2. np.where(condition)

返回的是坐标

示例:

import numpy as np

a = np.array([2, 4, 6, 8, 10])
#一维矩阵
result_1 = np.where(a > 5)
print(result_1)

b = np.random.randn(4, 4)
#二维矩阵
print(b)
result_2 = np.where(b > 0)
print(result_2)

结果:

Output from spyder call 'get_namespace_view':
(array([2, 3, 4], dtype=int64),)
[[-0.83362412 -2.23605027  0.15374728  0.70877121]
 [-0.30212209  0.56606258  0.95593288  1.03250978]
 [-0.85764257  1.48541971  0.73199465  1.66331547]
 [-0.22020036  0.46416537 -0.75622715  0.32649036]]
(array([0, 0, 1, 1, 1, 2, 2, 2, 3, 3], dtype=int64), array([2, 3, 1, 2, 3, 1, 2, 3, 1, 3], dtype=int64))

总结

传递给np.where 的参数既可以是同等大小的数组,也可以是标量。当不传递参数,只传递条件时,输出的是满足条件的坐标。文章来源地址https://www.toymoban.com/news/detail-427343.html

到了这里,关于【知识点】np.where()用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot + Vue基本知识点荟萃

    Maven是一个项目管理工具,可以对Java项目进行自动化的构建和依赖管理 项目构建:提供标准的,跨平台的自动化构建项目的方式 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突等问题 统一开发结构:提供标准的,统一的项目开发结构,如下图所

    2023年04月17日
    浏览(51)
  • 【知识点】Python 的np.prod函数详解

    np.prod 是Numpy库中的一个函数,全称为 numpy.prod ,它的作用是计算数组中所有元素的乘积。该函数是一个快速的计算积的方法,可以接收任意数组或矩阵作为输入,并返回这些数字的乘积。 举个例子: 上面的代码计算了数组 a 中的元素的乘积,最终结果为120。 除了可以计算数

    2024年02月05日
    浏览(52)
  • [SVA知识点一]: System verilog 断言(assert)的基本介绍

    断言(System Verilog Assertion 简称SVA) 可以被放在RTL设计或验证平台中,方便在仿真时查看异常情况。一般在数字电路设计中都要加入断言,断言占整个设计的比例应不少于30%。断言通常被称为序列监视器或者序列检验器,是对设计应当如何执行特定行为的描述,是一种嵌入设

    2024年02月10日
    浏览(41)
  • [SVA知识点二]: System verilog 断言(assert)的基本介绍

    举例介绍序列: 例1 序列seq1检查信号 “b” 在每个时钟上升沿都为高电平。如果信号 “b” 在任何一个时钟上升沿不为高电平,断言将失败。这相当于 “b == 1’b1”。 例2 例3:带参数的sequence 例4:带时序关系的sequence,在SVA 中时钟延时用符号 “##” 来表示,如 “##2” 表示

    2024年02月02日
    浏览(39)
  • 搜索引擎的基本原理、算法、用户画像及其他相关知识点

    作者:禅与计算机程序设计艺术 作为一个互联网公司,无疑需要做好搜索引擎的运营。每天都要搜索很多信息,如何做好搜索引擎的用户体验,提高用户的转化率是每家公司的核心竞争力。但实际上,做好搜索引擎运营也不是一件容易的事情,因为搜索引擎的特性、相关性算

    2024年02月04日
    浏览(60)
  • pinia的基本创建和统一创建和解构失去响应式解决办法等知识点

    https://stackblitz.com/github/superBiuBiuMan/pinia_registerWay 不能直接结构赋值 如果直接结构赋值,就像下面一样,就会失去响应式效果(数据变了,视图依旧不会更新) 如果确实需要解构赋值,可以使用 storeToRefs https://pinia.vuejs.org/zh/core-concepts/index.html#using-the-store 多次使用依旧是相同的对象 官

    2024年02月09日
    浏览(40)
  • Java面试题:解释Java的基本数据类型及其大小和默认值,列举数据类型常见的错误知识点

    Java的基本数据类型是Java编程语言中用于存储简单值的类型。这些数据类型包括整数类型、浮点类型、字符类型和布尔类型。下面是对这些基本数据类型的详细解释,包括它们的大小和默认值,以及一些常见的面试中容易出错的知识点。 基本数据类型及其大小和默认值 整型

    2024年04月16日
    浏览(40)
  • C++ 类与对象中类的深入知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏

    本章我们接着对类和对象进行探索,这是一个在我们c++中比较重要的知识点,下面我们才是我们类和对象的更加深入且困难的知识点,希望你能通过这篇文章对类其有更加深入的了解。 话不多说安全带系好,发车啦(建议电脑观看)。 附:红色,部分为重点部分;蓝颜色为

    2024年02月04日
    浏览(62)
  • C++ 命名空间、域、缺省参数、函数重载、引用、auto、内联函数的知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏

            从本章开始我们正式进入到C++的内容,对此如果没有学习过C语言的建议先将C语言系统的学习一遍后再来(已经更新完在专栏就能看到)。 话不多说安全带系好,发车啦 (建议电脑观看) 。 附:红色,部分为重点部分;蓝颜色为需要记忆的部分(不是死记硬背哈,

    2023年04月24日
    浏览(98)
  • 【知识点】eval() 的用法

    目录 一、基本知识 二、具体实例 三、项目应用 总结 返回传入字符的表达式的结果。即将字符串当成有效的表达式,进行运算、求值并返回结果。 从某种意义上说,eval就是实现list、dict、tuple和 str 之间的相互转换。 作用: eval()函数又称为评估函数,作用是去掉参数中最外

    2024年02月02日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包