numpy函数学习

NumPy是开源的Python科学计算库,可自然使用数组合矩阵,涵盖线性代数等功能。本文介绍了NumPy的多个函数,如roll用于滚动数组元素,rot90可旋转数组,min/max取最值,lexsort能对数组按行或列排序等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy可以很自然的使用数组合矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。

roll

沿给定轴滚动数组元素。超出最后位置的元素将在第一个位置重新引入。

numpy.roll(a, shift, axis=None)

参数

  • a: array_like
    输入数组
  • shift:int或int类型的tuple
    元素移位的位置数。如果是一个元组,那么轴必须是一个相同大小的元组,并且每个给定轴被相应的数字移动。如果值是int当axis是int类型的tuple,那么对所有给定的轴使用相同的值。
  • axis:int或int类型的tuple
    可选元素沿其移动的一个或多个轴。默认情况下,在移动之前将阵列弄平,然后恢复原始形状。

返回值

  • res:ndarray
    输出数组,shape与a相同。
    在这里插入图片描述

rot90

在轴指定的平面中将array旋转90度。旋转方向是从第一个轴到第二个轴。

numpy.rot90(m, k=1, axes=(0, 1))

参数

  • m:array_like
    二维或二维数组
  • k:integer
    阵列旋转90度的次数
  • axes:(2:)array_like
    array在轴定义的平面中旋转。轴必须不同。

返回值

  • y:ndarray
    m的旋转视图
    在这里插入图片描述

min/max

传入一个a,并取a在axis方向上的最小值最大值。

np.max(a, axis=None, out=None, keepdims=False)
np.min(a, axis=None, out=None, keepdims=False)

在这里插入图片描述

minimum/maximum

传入两个x和y,x和y逐位比较取最小值最大值。

np.maximum(x, y, out=None)
np.minimum(x, y, out=None)

在这里插入图片描述

lexsort

实现对数组或列表按照某一行或列进行排序。按照一个键值序列提供一个间接稳定的排序。

lexsort(keys, axis=-1)
  • 利用lexsort对二维数组按照某一行排序
    lexsort的键参数是二维数组时,对行排序,排序的方式是先对最后一行排序,当有相同元素时,然后按照倒数第二行对应的元素排序,……依次类推。
    例如:a1返回的是a的最后一行按照从小到大排列后所对应的索引值,比如最后一行为[6,2,9,5],从小到大排列为:2,5,6,9;其对应的索引号为:1,3,0,2.
    如果对a按照第二行升序排列,当有相同项时按照第一行升序排序.

    import numpy as np
    a = np.array([[1,2,1,5],[5,3,6,9],[6,2,9,5]])
    a.shape
    a
    #对a按照最后一行排序
    a1 = np.lexsort(a)
    a1
    a.T[a1].T
    #或者
    a[:, a1]
    #对a按照最后一行排序2
    a4 = np.lexsort(a[-1, None])
    a4
    a.T[a4].T
    #对a按照第二行升序排列,当有相同项时按照第一行升序排序
    a2 = np.lexsort(a[0:2, :])
    a2
    a.T[a2].T
    #或者
    a[:, a2]
    #对a按照第一行排序
    a3 = np.lexsort(a[::-1, :])
    a3
    a.T[a3].T
    #或者
    a[:, a3]
    #对a按照第一行排序2
    a5 = np.lexsort(a[0, None])
    a5
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 利用lexsort对二维数组按照某一列排序
    只需将数组矩阵做转置,将列变成行,行变成列就可以了。例如:对a矩阵按照第二列升序排列,当遇到相同元素时按照第一列升序排列。首先对a矩阵装置,这样矩阵的列变成了行,然后在对行按照第二行升序的方式排列,都获取相应的序列编号。

    	a = np.array([[1,2,1,5],[5,3,6,9],[6,2,9,5]])
    	a.shape
    	a
    	#按最后一列顺序排序
    	a1 = np.lexsort(a.T)
    	a1
    	a[a1]
    	#或者
    	a[a1, :]
    	#按最后一列顺序排序2
    	a5 = np.lexsort(a.T[-1, None])
    	a5
    	a[a5]
    	#按最后一列逆序排序
    	a2 = np.lexsort(-a.T)
    	a2
    	a[a2]
    	#或者
    	a[a2, :]
    	#按第二列升序排序,当遇到相同元素按照第一列升序排列
    	a3 = np.lexsort(a.T[:2, :])
    	a3
    	a[a3]
    	#或者
    	a[a3, :]
    	#按照第一列排序
    	a4 = np.lexsort(a[:, ::-1].T)
    	a4
    	a[a4]
    	#或者
    	a[a4, :]
    	#按照第一列排序2
    	a6 = np.lexsort(a.T[0, None])
    	a6
    	a[a6]
    

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

set_printoptions

set_printoptions(precision=None, threshold=None, edgeitems=None, 
				linewidth=None, suppress=None, nanstr=None, infstr=None)

在这里插入图片描述

#全部打印
np.set_printoptions(threshold=sys.maxsize)

参考资料

1.Python numpy.roll函数方法的使用
2.Python numpy.rot90函数方法的使用
3.python中np.max与np.maximum的区别
4.Python实现二维数组按照某行或列排序的方法【numpy lexsort】
5.用python中的numpy.lexsort()对矩阵按照某行(列)排序
6.lexsort对二维矩阵某行某列进行排序
7.np.set_printoptions的相关属性

### 三级标题:NumPy 常用函数及其使用方法 NumPy 是 Python 中用于科学计算和数据分析的重要库,它提供了高效的 N 维数组对象 `ndarray`,以及丰富的数学、统计、线性代数等函数,极大地提升了数据处理的效率[^1]。 #### 数组创建与初始化 NumPy 提供了多种创建数组的方式,其中最常用的是 `numpy.array()`,它可以从 Python 的列表或元组创建数组对象。此外,还有 `numpy.zeros()`、`numpy.ones()`、`numpy.arange()` 等函数用于生成特定结构的数组。 ```python import numpy as np # 从列表创建数组 arr = np.array([1, 2, 3]) # 创建全零数组 zeros = np.zeros((2, 3)) # 创建全一数组 ones = np.ones((3, 2)) # 创建等差数组 range_arr = np.arange(0, 10, 2) ``` #### 数组形状操作 在处理数组时,经常需要改变其形状。NumPy 提供了如 `reshape()`、`ravel()`、`transpose()` 等函数来实现数组的结构变换。其中 `reshape()` 返回新形状的数组视图,而 `resize()` 会直接修改原数组。 ```python arr = np.arange(6) # 改变形状为 2x3 reshaped = arr.reshape((2, 3)) # 一维化 flattened = reshaped.ravel() # 转置 transposed = reshaped.transpose() ``` #### 数组合并与拆分 由于 NumPy 数组一旦创建后其大小不可变,因此在需要动态扩展数组时,通常通过合并或拆分实现。`np.concatenate()`、`np.vstack()`、`np.hstack()` 是常用的合并函数;`np.split()`、`np.hsplit()`、`np.vsplit()` 则用于拆分。 ```python a = np.array([1, 2]) b = np.array([3, 4]) # 水平合并 h_combined = np.hstack((a, b)) # 垂直合并 v_combined = np.vstack((a, b)) ``` #### 数学与统计运算 NumPy 提供了丰富的数学运算函数,包括 `np.sum()`、`np.mean()`、`np.std()`、`np.min()`、`np.max()` 等统计函数,以及 `np.sin()`、`np.cos()`、`np.exp()` 等数学函数。 ```python data = np.array([[1, 2], [3, 4]]) # 求和 total = np.sum(data) # 求平均值 mean_val = np.mean(data) # 求标准差 std_val = np.std(data) ``` #### 随机数生成 `numpy.random` 模块提供了多种生成随机数的函数,例如 `np.random.rand()` 生成 [0,1) 区间的随机数,`np.random.randn()` 生成标准正态分布的随机数,`np.random.randint()` 生成指定范围的整数随机数。 ```python # 生成 2x3 的随机浮点数数组 rand_data = np.random.rand(2, 3) # 生成正态分布随机数 normal_data = np.random.randn(5) # 生成 0~10 的随机整数 int_data = np.random.randint(0, 10, size=5) ``` #### 线性代数运算 NumPy 的 `linalg` 模块支持常见的线性代数运算,如矩阵乘法、求逆、行列式计算等。这些功能在科学计算和机器学习中具有广泛应用。 ```python A = np.array([[1, 2], [3, 4]]) B = np.array([[5, 6], [7, 8]]) # 矩阵乘法 product = np.dot(A, B) # 矩阵求逆 inv_A = np.linalg.inv(A) # 求行列式 det_A = np.linalg.det(A) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值