python的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]])
上一篇: 查找 List 中的最大最小值
下一篇: python中的numpy模块