Numpy的常用函数总结

本文介绍了NumPy库中一些高级函数的应用技巧,包括数组索引、条件筛选、数组操作及数学运算等。通过实例展示了如何使用np.argmax、np.where、np.tile等函数,帮助读者深入理解NumPy的功能。

1、np.argmax()、np.max()、np.argmin()、np.min()用法:

2、np.where(condition[, x, y])

3、np.random中shuffle与permutation的区别

4、np.ascontiguousarray():返回和传入的数组类似的内存中连续的数组

5、np.empty():返回没有初始化的数组,它的值是随机的  

6、np.newaxis:为数组增加一个轴

7、np.tile():将矩阵横向、纵向地复制

8、np.sort()和np.argsort():第一个返回从小到大的排序值,第二个返回从小到大的索引

9、np.cumsum():返回当前列之前的和加到当前列上的数组


1、np.argmax()、np.max()、np.argmin()、np.min()用法:

  argmax返回的是最大数的索引.argmax有一个参数axis,默认是0。看二维的情况如下:

a = np.array([[1, 5, 5, 2],
              [9, 6, 2, 8],
              [3, 7, 9, 1]])
print(np.argmax(a, axis=0))
[1,2,2,1]  # 返回列表的长度为最里层元素的长度

a = np.array([[1, 5, 5, 2],
              [9, 6, 2, 8],
              [3, 7, 9, 1]])
print(np.argmax(a, axis=1))
[1,0,2]   # 返回列表的长度为次里层元素的长度

    argmax()返回的是元素的索引,而max()返回的则是元素值,max的用法和argmax相似,也有一个axis的参数。同理,argmin()和min()也是相同的用法。

2、np.where(condition[, x, y])

  1)这里x,y是可选参数,condition是条件,这三个输入参数都是array_like的形式;而且三者的维度相同
  2)当conditon的某个位置的为true时,输出x的对应位置的元素,否则选择y对应位置的元素;
  3)如果只有参数condition,则函数返回为true的元素的坐标位置信息;

x = np.arange(9.).reshape(3, 3)
[[0. 1. 2.]
 [3. 4. 5.]
 [6. 7. 8.]]
print (np.where( x > 5 ))
(array([2, 2, 2]), array([0, 1, 2]))

返回值其实是:
x[2, 0], x[2, 1], x[2, 2]

3、np.random中shuffle与permutation的区别

    函数np.shuffle()与np.permutation()都是对原来的数组进行重新洗牌(即随机打乱原来的元素顺序),区别在于:

    shuffle直接在原来的数组上进行操作,改变原来数组的顺序,无返回值。而permutation不直接在原来的数组上进行操作,而是返回一个新的打乱顺序的数组,并不改变原来的数组。

4、np.ascontiguousarray():返回和传入的数组类似的内存中连续的数组

 x = np.arange(6).reshape(2,3)
 print (np.ascontiguousarray(x, dtype=np.float32))
 print (x.flags['C_CONTIGUOUS'])

输出:
[[0. 1. 2.]
 [3. 4. 5.]]
True

5、np.empty():返回没有初始化的数组,它的值是随机的  

print (np.empty([2, 2]))

输出:
[[ 0.00000000e+000 -8.77796459e-313]
 [ 1.40447433e-311  6.17582057e-322]]

6、np.newaxis:为数组增加一个轴

x = np.arange(3) 
print (x)
y=x[:, np.newaxis]
print (y)

输出:
array([0, 1, 2])
array([[0], [1], [2]])

7、np.tile():将矩阵横向、纵向地复制

a=np.array([[1,2], [3, 4]])
print (a)
[[1 2]
 [3 4]]
print (np.tile(a, (1, 4)))  # 从最深的维度扩展到原来的4倍
[[1 2 1 2 1 2 1 2]
 [3 4 3 4 3 4 3 4]]
print (np.tile(a, (3, 1)))  # 从次深的维度扩展到原来的3倍
[[1 2]
 [3 4]
 [1 2]
 [3 4]
 [1 2]
 [3 4]]
print (np.tile(a, (3, 4)))  # 首先最深的维度扩展4倍,然后次深的维度扩展3倍
[[1 2 1 2 1 2 1 2]
 [3 4 3 4 3 4 3 4]
 [1 2 1 2 1 2 1 2]
 [3 4 3 4 3 4 3 4]
 [1 2 1 2 1 2 1 2]
 [3 4 3 4 3 4 3 4]]

8、np.sort()和np.argsort():第一个返回从小到大的排序值,第二个返回从小到大的索引

a=np.array([1,3,2,4])    
print (np.sort(a))     # 返回从小到大的排序
[1 2 3 4]
print (np.argsort(a))  # 返回从小到大的排序索引
[0 2 1 3]
print (np.argsort(-a)) # 返回从大到小的排序索引
[3 1 2 0]

9、np.cumsum():返回当前列之前的和加到当前列上的数组

a=[1,2,3,4,5,6,7]
print (np.cumsum(a))
[ 1  3  6 10 15 21 28]
c=[[1,2,3],[4,5,6],[7,8,9]]
print (np.cumsum(c,axis=0))  # 0(第一行不动,其他行累加)
[[ 1  2  3]
 [ 5  7  9]
 [12 15 18]]
print (np.cumsum(c,axis=1))  # 1(第一列列不动,其他列累加)
[[ 1  3  6]
 [ 4  9 15]
 [ 7 15 24]]

 

### 常用 NumPy 函数及其用途总结 NumPy 是 Python 中用于科学计算的核心库之一,提供了大量高效的数组操作函数。以下是一些常用NumPy 函数及其功能说明: #### 数组创建 - `np.array()`:将输入数据(如列表、元组等)转换为 NumPy 数组。 - `np.arange()`:创建一个等差数列数组,类似于 Python 的 `range()`。 - `np.linspace()`:生成在指定区间内均匀分布的数值数组。 - `np.zeros()`:创建指定形状的全零数组。 - `np.ones()`:创建指定形状的全一数组。 - `np.empty()`:创建未初始化的数组,其初始值是随机的。 - `np.eye()` 或 `np.identity()`:创建单位矩阵。 #### 数组操作 - `np.reshape()`:改变数组的形状而不改变其数据。 - `np.ravel()`:将多维数组展平为一维数组。 - `np.transpose()` 或 `.T`:对数组进行转置操作。 - `np.concatenate()`:沿指定轴连接多个数组。 - `np.split()`:将数组沿指定轴分割成多个子数组。 - `np.sort()`:对数组进行排序。 - `np.argsort()`:返回排序后的索引数组。 - `np.where()`:根据条件返回满足条件的元素索引或值。 - `np.unique()`:找出数组中的唯一元素并返回排序后的结果。 #### 数学运算 - `np.sum()`:计算数组元素的总和。 - `np.mean()`:计算数组元素的平均值。 - `np.std()`:计算数组元素的标准差。 - `np.var()`:计算数组元素的方差。 - `np.min()` 和 `np.max()`:分别返回数组中的最小值和最大值。 - `np.argmin()` 和 `np.argmax()`:分别返回数组中最小值和最大值的索引。 - `np.prod()`:计算数组元素的乘积。 - `np.cumsum()`:计算数组元素的累加和。 - `np.cumprod()`:计算数组元素的累乘积。 - `np.abs()`:计算数组元素的绝对值。 - `np.sqrt()`:计算数组元素的平方根。 - `np.square()`:计算数组元素的平方。 - `np.exp()`:计算数组元素的指数(e 的幂)。 - `np.log()`:计算数组元素的自然对数。 - `np.sin()`、`np.cos()`、`np.tan()`:分别计算数组元素的正弦、余弦和正切值。 #### 线性代数运算 - `np.dot()`:计算两个数组的点积。 - `np.linalg.inv()`:计算矩阵的逆。 - `np.linalg.det()`:计算矩阵的行列式。 - `np.linalg.eig()`:计算矩阵的特征值和特征向量。 - `np.linalg.solve()`:求解线性方程组。 #### 随机数生成 - `np.random.rand()`:生成 [0, 1) 区间内均匀分布的随机数组。 - `np.random.randn()`:生成服从标准正态分布的随机数组。 - `np.random.randint()`:生成指定范围内的随机整数。 - `np.random.choice()`:从给定的一维数组中随机抽取元素。 - `np.random.shuffle()`:对数组进行原地洗牌操作。 #### 条件与逻辑操作 - `np.where()`:根据条件选择元素。 - `np.logical_and()`、`np.logical_or()`、`np.logical_not()`:执行逻辑与、或、非操作。 - `np.all()` 和 `np.any()`:分别检查数组中所有元素是否都为 True 或至少有一个为 True。 #### 文件操作 - `np.save()`:将数组保存到 `.npy` 文件中。 - `np.load()`:从 `.npy` 文件中加载数组。 - `np.savetxt()`:将数组保存为文本文件。 - `np.loadtxt()`:从文本文件中加载数组。 #### 示例代码:创建数组并进行基本操作 ```python import numpy as np # 创建数组 a = np.array([[1, 2], [3, 4]]) print("原始数组:\n", a) # 计算总和 print("总和:", np.sum(a)) # 计算平均值 print("平均值:", np.mean(a)) # 计算标准差 print("标准差:", np.std(a)) # 数组转置 print("转置数组:\n", np.transpose(a)) # 排序 print("排序后的数组:\n", np.sort(a)) ``` NumPy 提供了丰富的函数支持数组的高效操作,适用于科学计算、数据分析和机器学习等多个领域。通过合理使用这些函数,可以显著提高代码的性能和可读性[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值