python数据分析numpy基础之where三元表达式的矢量化

2024-02-15 18:12

本文主要是介绍python数据分析numpy基础之where三元表达式的矢量化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 python数据分析numpy基础之where三元表达式的矢量化

python的numpy库的where()函数返回满足条件的索引值,或者返回满足条件和不满足条件的元素值。

用法

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

描述

如果x和y没传,则返回满足条件condition的索引值组成的一维数组;

如果x和y有传,则condition为True取x,condition为False取y。

入参

condition:必选,array_like,bool

x,y:可选,array_like

condition为True,则从x取对应索引的元素,

condition为False,则从y取对应索引的元素。

出参

返回一维数组组成的元组,由满足条件的索引组成,或由x和y的元素组成。

1.1 入参condition

numpy.where()的入参condition为必选入参,表示产生索引或元素的条件。

如果condition作用于一维数组,则返回数组为一维数组的索引;

如果condition作用于二维数组,则返回2个一维数组组成的元组,第1个数组表示第1位索引,第2个数组表示第2为索引。

>>> import numpy as np
# 创建一维数组
>>> ar1=np.array([1,11,2,12,3,5,6,8,10])
>>> ar1
array([ 1, 11,  2, 12,  3,  5,  6,  8, 10])
# 只送condition
# 返回ar1中元素大于5的索引组成的一维数组组成的元组
>>> np.where(ar1>5)
(array([1, 3, 6, 7, 8], dtype=int64),)# 创建二维数组
>>> ar2=np.array([[1,12,3,13,5],[11,6,15,8,9]])
>>> ar2
array([[ 1, 12,  3, 13,  5],[11,  6, 15,  8,  9]])
# 返回ar2中大于8的元素的索引,
# 元组的第1个数组为满足条件的元素的第1位索引
# 元组的第2个数组为满足条件的元素的第2位索引
# 元组的第1个和第2个数组一一对应组成元素的第1和第2位索引
# 12的索引为ar2[0,1],存放在第1个数组的0和第2个数组的1
>>> np.where(ar2>8)
(array([0, 0, 1, 1, 1], dtype=int64), array([1, 3, 0, 2, 4], dtype=int64))

1.2 入参x,y

numpy.where()的入参x,y为可选入参,表示要获取返回值的地方,可以为标量或数组。

condition为True,则True位置的元素从x取对应索引的元素或值,

condition为False,则False位置的元素从y取对应索引的元素或值。

x和y可以都是标量,都是数组,或者标量和数组的组合。

>>> import numpy as np
# 创建二维数组
>>> con=np.array([[1,12,3,13,5],[11,6,15,8,9]])
>>> con
array([[ 1, 12,  3, 13,  5],[11,  6, 15,  8,  9]])
# con元素大于8的位置取值为'>8'
# con元素小于8的位置取值为'<=8'
# x,y为标量
>>> np.where(con>8,'>8','<=8')
array([['<=8', '>8', '<=8', '>8', '<=8'],['>8', '<=8', '>8', '<=8', '>8']], dtype='<U3')
# x,y为数组
>>> ar1=np.array([1,2,3,0,5])
>>> ar2=np.array([11,12,13,10,15])
>>> con=np.array([6,7,8,9,10])
# con>8的元素索引位置取ar1对应索引位置的元素,否则取ar2的元素
>>> np.where(con>8,ar1,ar2)
array([11, 12, 13,  0,  5])
>>> con>8
array([False, False, False,  True,  True])
# x,y为标量和数组的组合
>>> np.where(con>8,'>8',con)
array(['6', '7', '8', '>8', '>8'], dtype='<U11')

这篇关于python数据分析numpy基础之where三元表达式的矢量化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/712143

相关文章

Python19 lambda表达式

在 Python 中,lambda 表达式是一个小型匿名函数,通常用于实现简单、单行的函数。lambda 函数可以接受任意数量的参数,但只能有一个表达式。 基本语法: lambda arguments: expression 这里,arguments 是传递给 lambda 的参数,expression 是关于这些参数的表达式,它的计算结果就是 lambda 函数的返回值。 使用

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

java8的新特性之一(Java Lambda表达式)

1:Java8的新特性 Lambda 表达式: 允许以更简洁的方式表示匿名函数(或称为闭包)。可以将Lambda表达式作为参数传递给方法或赋值给函数式接口类型的变量。 Stream API: 提供了一种处理集合数据的流式处理方式,支持函数式编程风格。 允许以声明性方式处理数据集合(如List、Set等)。提供了一系列操作,如map、filter、reduce等,以支持复杂的查询和转

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

Python 字符串占位

在Python中,可以使用字符串的格式化方法来实现字符串的占位。常见的方法有百分号操作符 % 以及 str.format() 方法 百分号操作符 % name = "张三"age = 20message = "我叫%s,今年%d岁。" % (name, age)print(message) # 我叫张三,今年20岁。 str.format() 方法 name = "张三"age

ps基础入门

1.基础      1.1新建文件      1.2创建指定形状      1.4移动工具          1.41移动画布中的任意元素          1.42移动画布          1.43修改画布大小          1.44修改图像大小      1.5框选工具      1.6矩形工具      1.7图层          1.71图层颜色修改          1

一道经典Python程序样例带你飞速掌握Python的字典和列表

Python中的列表(list)和字典(dict)是两种常用的数据结构,它们在数据组织和存储方面有很大的不同。 列表(List) 列表是Python中的一种有序集合,可以随时添加和删除其中的元素。列表中的元素可以是任何数据类型,包括数字、字符串、其他列表等。列表使用方括号[]表示,元素之间用逗号,分隔。 定义和使用 # 定义一个列表 fruits = ['apple', 'banana

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

python实现最简单循环神经网络(RNNs)

Recurrent Neural Networks(RNNs) 的模型: 上图中红色部分是输入向量。文本、单词、数据都是输入,在网络里都以向量的形式进行表示。 绿色部分是隐藏向量。是加工处理过程。 蓝色部分是输出向量。 python代码表示如下: rnn = RNN()y = rnn.step(x) # x为输入向量,y为输出向量 RNNs神经网络由神经元组成, python