np.where()使用详解

简介: 1.函数介绍np.where函数相当于三元表达式的向量版本,能够针对向量作三元操作,有两种使用方法。np.where(condition, x, y):当满足第一个参数条件时,where返回x,不满足第一个参数的条件时返回y。

1.函数介绍

np.where函数相当于三元表达式的向量版本,能够针对向量作三元操作,有两种使用方法。

  1. np.where(condition, x, y):当满足第一个参数条件时,where返回x,不满足第一个参数的条件时返回y。

 2.np.where(condition):只有condition,没有x,y则输出满足条件的坐标(下标),以元组的形式返回。

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

(1)示例:

x,y为两个标量。

# 创建0-9的一维数组
a = np.arange(10)
b = np.where(a > 3, 0, 1)
print(a)
print(b)
# 结果
[0 1 2 3 4 5 6 7 8 9]
[1 1 1 1 0 0 0 0 0 0]

a>3,满足条件,把相应位置换为0;不满足条件,把相应位置换为1

(2)示例:

x,y为两个数组。

a = np.array([1, 3, 5, 7, 9])
b = np.array([2, 4, 6, 8, 10])
condition = np.array([True, False, False, True, True])
result = np.where(condition, a, b)
print(result)
# 结果
[1 4 6 7 9]

可以看出,布尔值为Ture时,返回a数组的值;为False时,返回b数组的值。

(3)示例

x,y为一个标量一个数组。

# 将小于0的换成2
a = np.array( [-1, 3, -5, 7, -9] )
result = np.where(a < 0, 2, a)
print(result)
# 结果
[-1  3 -5  7 -9]
[2 3 2 7 2]

(4) 示例

官网上的例子

 # 官网上的例子
a = np.where([[True, False], [True, True]], 
             [[1, 2], [3, 4]], 
             [[9, 8], [7, 6]])
print(a)
# 结果
[[1 8]
 [3 4]]

上面这个例子的条件为[[True,False], [True,True]],分别对应最后输出结果的四个值。第一个值从[1,9]中选,因为条件为True,所以是选1。第二个值从[2,8]中选,因为条件为False,所以选8,后面以此类推。

3.np.where(condition)

返回的是符合条件的坐标,这里的坐标以tuple的形式给出,通常原数组有多少维,输出的tuple中就包含几个数组,分别对应符合条件元素的各维坐标。

(1)示例

一维数组

a = np.arange(10)
b = np.where(a > 7)
print(f'a = {a}')
print(f'b = {b}')
a = [0 1 2 3 4 5 6 7 8 9]
b = (array([8, 9], dtype=int64),)

返回的是数组的下标,大于7的只有8,9

(2) 示例

二维数组

a = np.random.randn(3, 3)
print(f'a = {a}')
b = np.where(a > 0)
print(f'b = {b}')
a = [[-0.87715562  0.75345355 -2.14373533]
 [ 0.36962462 -0.3567048  -0.38734703]
 [-0.20589702  0.00343925 -0.79235428]]
b = (array([0, 1, 2], dtype=int64), array([1, 0, 1], dtype=int64))

返回的是下标,第一个元组的x,第二个元组是y。

以上就是np.where的详细内容。如果有问题,欢迎在评论区讨论。

目录
相关文章
|
1月前
|
索引 Python
Numpy学习笔记(三):np.where和np.logical_and/or/not详解
NumPy库中`np.where`和逻辑运算函数`np.logical_and`、`np.logical_or`、`np.logical_not`的使用方法和示例。
106 1
Numpy学习笔记(三):np.where和np.logical_and/or/not详解
|
6月前
|
存储 数据挖掘 数据格式
np.fromfile
np.fromfile“【5月更文挑战第22天】”
526 3
|
1月前
|
Python
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
NumPy库中的`np.concatenate`和`np.append`函数,它们分别用于沿指定轴拼接多个数组以及在指定轴上追加数组元素。
26 0
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
|
1月前
|
机器学习/深度学习 索引 Python
Numpy学习笔记(二):argmax参数中axis=0,axis=1,axis=-1详解附代码
本文解释了NumPy中`argmax`函数的`axis`参数在不同维度数组中的应用,并通过代码示例展示了如何使用`axis=0`、`axis=1`和`axis=-1`来找到数组中最大值的索引。
79 0
Numpy学习笔记(二):argmax参数中axis=0,axis=1,axis=-1详解附代码
|
6月前
|
计算机视觉 Python
np.ones
np.ones
120 1
|
算法 定位技术
浅谈P、NP、NP-Complate和NP-Hard问题
时间复杂度 时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当程序所处理的问题规模扩大后,程序需要的时间长度对应增长得有多快。 也就是说,对于某一个程序,其处理某一个特定数据的效率不能衡量该程序的好坏,而应该看当这个数据的规模变大到数百倍后,程序运行时间是否还是一样,或者也跟着慢了数百倍,或者变慢了数万倍。 不管数据有多大,程序处理所花的时间始终是那么多的,我们就说这个程序很好,具O(1)O(1)O(1)的时间复杂度,也称常数级复杂度;
|
机器学习/深度学习 PyTorch 算法框架/工具
Numpy | np.random随机模块的使用介绍
Numpy | np.random随机模块的使用介绍
243 0
Numpy | np.random随机模块的使用介绍
|
数据可视化 PyTorch 算法框架/工具
np.squeeze 的用法
np.squeeze 的用法
|
算法
【计算理论】计算复杂性 ( NP 完全问题 | NP 难 问题 P = NP 的情况 | NP 难 问题 P ≠ NP 的情况 )
【计算理论】计算复杂性 ( NP 完全问题 | NP 难 问题 P = NP 的情况 | NP 难 问题 P ≠ NP 的情况 )
177 0
【计算理论】计算复杂性 ( NP 完全问题 | NP 难 问题 P = NP 的情况 | NP 难 问题 P ≠ NP 的情况 )