欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python的numpy模块

程序员文章站 2022-05-18 17:15:14
...

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]])
相关标签: python