python的numpy模块

本文介绍了Python科学计算库NumPy的基础用法,包括数组创建、基本运算、数组操作及常用数学函数。通过实例演示了如何利用NumPy进行高效的矩阵运算。

numpy是Python的一个科学计算的库,提供了矩阵运算的功能,一般与scipy, matplotlib一起使用。

导入:
import numpy as np

以下所有numpy简写为np。

np.array():

生成数组。和以list或tuple为参数可生成一维或多维数组。
生成一维数组:

>>>np.array([1, 2, 3, 4, 5])
array([1, 2, 3, 4, 5])

生成多维数组:

>>>np.array([[1, 2, 3], [4, 5, 6]])
array([[1, 2, 3],
    [4, 5, 6]])
np.arange():

生成等差数组,默认步长为1,支持浮点数。

>>>np.arange(0, 2, .5)
array([0., 0.5, 1., 1.5])
np.empty():

生成指定形状的矩阵而不进行初始化

>>> np.empty((2,2))
array([[6.93128581e-310, 6.93128581e-310],
       [1.06183561e-316, 1.06965529e-316]])
赋值

将矩阵的某一列的值赋给另一矩阵的某列:

b[:,0] = a[:,1]

即为将矩阵a的第一列赋给矩阵b的第0列。

矩阵与常数运算

示例如下:

>>>a = np.array([1,2,3,4,5])
>>>a+1
array([2, 3, 4, 5, 6])

减法,乘法,除法和乘方与此类似。

np.std():

计算矩阵/向量包标准差,常用于数据的z-score标准化(标准化后数据服从标准正态分布)
z-score标准化:

normalized_data = (data-np.mean(data))/np.std(data)
np.ones_like():

生成用1填充的,与传入数组形状相同的数组。

>>>a = np.array([1,2,3])
>>>np.ones_like(a)
array([1, 1, 1])

类似的函数还有np.zeros_like()

np.equal():

输入两个形状相同的数组(或两个数),逐个比较数组中元素是否相等,返回布尔值数组(或一个布尔值)。

>>>np.equal([1,2,3], [1,2,4])
array([True, True, False])

若输入为一个数和一个数组,则将数组中每个元素与这个数进行比较,返回布尔值数组。
函数np.not_equal()np.greater_equal()np.less_equal()np.greater()np.less()的用法与之类似。

np.concatenate():

实现矩阵的拼接,输入参数为两个矩阵组成的元组和需要拼接的维度axis。举例说明:

>>> a = np.array([[1,2],[3,4]])
>>> b = np.array([[5,6],[7,8]])
>>> np.concatenate((a,b), axis=0)
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])
>>> np.concatenate((a,b), axis=1)
array([[1, 2, 5, 6],
       [3, 4, 7, 8]])

np.pad():

pad(array,pad_width,mode,**kwars)函数实现矩阵的扩充填补,其中pad_with传入需要填补的元素个数,mode选择模式,有“constant”, “edge”等,如果模式选择constant则需要传入填入的常数。例如:

>>> a = np.array([1,2,3])
>>> np.pad(a, (0,3), 'constant', constant_values=0)
array([1, 2, 3, 0, 0, 0])

>>> a = np.array([[1,2], [2,3]])
>>> np.pad(a, ((0,3),(1,1)), 'constant', constant_values=0)
array([[0, 1, 2, 0],
       [0, 2, 3, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0]])

>>> a = np.array([[1,2], [2,3]])
>>> np.pad(a, ((0,3),(1,1)), 'constant', constant_values=((0,5),(4,4)))
array([[4, 1, 2, 4],
       [4, 2, 3, 4],
       [4, 5, 5, 4],
       [4, 5, 5, 4],
       [4, 5, 5, 4]])

np.max()

可以说是个比较神奇的函数了,在不指定axis的情况下返回整个array中最大的元素,在指定维度情况下返回一个该维度的array,其中每个元素都是该“位置”的最大值。例如:

>>> a = np.array([[1,2,3],[4,5,6]])
>>> np.max(a)
6

>>> np.max(a, 0)
array([4, 5, 6])

>>> np.max(a, 1)
array([3, 6])

np.argsort()
argsort(a, axis=-1, kind=’quicksort’, order=None)函数的基本输入是一个数组或矩阵a,输出是一个与a形状相同的数组或矩阵,其中的内容是将a按指定维度进行升序排序后每个元素的索引。例如:

>>> import numpy as np
>>> a = np.array([3,1,2])
>>> np.argsort(a)
array([1, 2, 0])

其中返回的array指明了排在相应位置的元素在原数组中的位置,例如排序后结果中最小的元素是a[1],因此返回的数组中index为0的元素为1。
如果想要将a降序排列,直接加负号,注意只有用numpy定义的结构才有此操作。

>>> np.argsort(-a)
array([0, 2, 1])

argsort()函数中,参数axis指定排序的维度,kind指定排序方法,order用于解决两个对象用于排序的维度相等的情况。

>>> a = np.mat([[1,2,3], [2,3,4]])
>>> np.argsort(a)
matrix([[0, 1, 2],
        [0, 1, 2]])
>>> np.argsort(a, axis=0)
matrix([[0, 0, 0],
        [1, 1, 1]])
### 关于PythonNumPy模块的使用 #### NumPy简介 NumPy,即Numerical Python,是Python中最常用于科学计算的一个库之一。该库提供了一个强大的多维数组对象`ndarray`以及大量用来操作这些数组的函数[^2]。 #### 安装NumPy 为了能够正常使用NumPy的功能,在项目环境中需先完成安装过程。由于NumPy底层采用C语言实现并解除了GIL(全局解释器锁),因此其执行效率相较于纯Python代码更高[^1]。 #### 创建数组 创建一个简单的NumPy数组可以通过调用`numpy.array()`方法来实现: ```python import numpy as np arr = np.array([1, 2, 3]) print(arr) ``` 此命令会输出一维整数类型的数组。通过设置参数可以控制更多细节,比如指定数据类型(`dtype`)、最小维度(`ndmin`)等属性[^3]。 #### 数组运算 相比于标准列表,NumPy数组支持向量化操作,这意味着可以直接对整个数组应用算术运算符而无需显式循环遍历每一个元素。例如加法操作如下所示: ```python a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) c = a + b print(c) # 输出 [5 7 9] ``` 这种特性使得处理大规模数计算更加高效便捷。 #### 形状变换 有时需要改变现有数组形状而不影响其中的数据分布情况。这可通过reshape()函数轻松达成: ```python d = c.reshape((3, 1)) print(d) e = d.flatten() print(e) ``` 上述例子展示了如何将一维数组转换成三维矩阵再恢复原样。 #### 常见问题解答 当遇到与NumPy有关的问题时,通常可以从官方文档获取帮助;另外也可以尝试查阅Stack Overflow上的讨论帖寻求解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值