numpy中 where函数的用法

在我的理解中np.where函数有三个用法

1. np.where()[0] 和 np.where()[1]

where在我的理解中是一个寻找数组中某个元素的函数,在此用法中np.where()[0] 表示行索引,np.where()[1]表示列索引
具体如下

import numpy as np
array = np.arange(12).reshape(3,4)
print('array:', array)
print('np.where(array > 5):', np.where(array > 5))
print('array[np.where(a > 5)]:', array[np.where(array > 5)])
print('np.where(array > 5)[0]:', np.where(array > 5)[0])
print('np.where(array > 5)[1]:', np.where(array > 5)[1])
print(array[np.where(array > 5)[0], np.where(array > 5)[1]])

array: [[ 0 1 2 3]
 [ 4 5 6 7]
 [ 8 9 10 11]]
np.where(array > 5): (array([1, 1, 2, 2, 2, 2]), array([2, 3, 0, 1, 2, 3]))
array[np.where(array > 5)]: [ 6 7 8 9 10 11]
np.where(array > 5)[0]: [1 1 2 2 2 2]
np.where(array > 5)[1]: [2 3 0 1 2 3]
[ 6 7 8 9 10 11]

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

满足condition 这个条件的输出x,不满足输出y。
如下所示,小于2的数改为0,否则改为10

import numpy as np
t2=np.array([[1,2,3],[1,2,3]])
print(np.where(t2<2,0,10))

[[ 0 10 10]
 [ 0 10 10]]#输出

3. np.where(condition)

只有条件 (condition),没有x和y,则输出满足条件 (即非0) 元素的坐标 (类似于numpy.nonzero)。
举个简单的例子

import numpy as np
t2=np.array([[1,2,3],[1,2,3]])
print(np.where(t2<2))

(array([0, 1], dtype=int64), array([0, 0], dtype=int64)) #输出

所以 np.where会输出每个符合要求的元素的对应的坐标

需要注意的一点是,输入的不能直接是list,需要转为array或者为array才行。比如range(10)和np.arange(10)后者返回的是数组,使用np.where才能达到效果。

NumPyPython用于处理大型数组和矩阵的核心库,提供了高效的数学函数和操作。以下是一些主要的NumPy函数用法: 1. **创建数组**: - `numpy.array()`: 将列表、元组或其他序列转换为NumPy数组。 - `numpy.zeros()`: 创建指定形状的全零数组。 - `numpy.ones()`: 创建指定形状的全一数组。 - `numpy.empty()`: 创建给定形状但未初始化的内存块。 2. **基本操作**: - `numpy.add(a, b)`, `a + b`: 数组相加。 - `numpy.subtract(a, b)`, `a - b`: 数组相减。 - `numpy.multiply(a, b)`, `a * b`: 数组相乘。 - `numpy.divide(a, b)`, `a / b`: 数组除法(元素级)。 3. **索引和切片**: - `array[index]` 或 `array[start:stop:step]`: 获取子数组或特定元素。 - `numpy.reshape(array, new_shape)`: 改变数组的维度。 4. **统计和计算**: - `numpy.mean(a, axis=0)`: 计算数组平均值。 - `numpy.sum(a, axis=None)`: 汇总数组元素。 - `numpy.std(a, ddof=1)`: 计算标准差。 - `numpy.argmax(a)`: 找到数组最大值的索引位置。 5. **线性代数**: - `numpy.dot(a, b)`: 矩阵点积。 - `numpy.linalg.inv(a)`: 计算矩阵的逆。 - `numpy.linalg.det(a)`: 计算矩阵行列式的值。 6. **随机数生成**: - `numpy.random.rand(shape)`: 生成均匀分布的随机数。 - `numpy.random.randn(shape)`: 生成正态分布的随机数。 7. **布尔逻辑**: - `numpy.where(condition)`: 根据条件返回数组的子集。 这只是NumPy功能的一部分,实际使用时还有很多其他高级函数函数组合,如广播规则、数组切片和重塑等。如果你有具体的函数名或操作想了解,告诉我具体的问题,我可以提供更详细的说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值