numpy相关函数

import numpy as np
import scipy as sp

a = np.ones((2, 3),dtype=int)
a.sum(axis=0)#按列相加
a.sum(axis=1)#按行相加

a.ravel()#转为一维

b = a.reshape #返回一个新的修改后的数组,若修改b中的值,a中相应的值也会改变,若要真正的拷贝改为b = a.reshape().copy()
a.resize#直接修改数组本身,返回值为None
a.ndim #返回矩阵的维度
a.shape #返回矩阵的大小(行数, 列数)

np.argmax(a) #返回最大值的下标
np.isnan(a) #返回和a一样大小的矩阵,若为nan则为True,否则为False
a[~np.isnan(a)] #返回过滤nan元素后的矩阵
np.nan != np.nan is true

sp.sum(np.isnan(a)) # 返回元素值为nan的个数
np.linspace(start,stop,num) #返回在区间start--stop中的num个点
np.logspace(start, stop, num=50, endpoint=True, base=10.0) #返回在区间base**start--base**stop中的num个点
a[:,0] #取a的第0例

d = a[:,0:-1]    #除去最后一列
d.min(0)         #取每列的最小值
d.min(1)         #取每行的最大值
d[i,:]           #取第i行
d[100:1000,:]    #取[100,1000)行


np.eye            #对角矩阵,只有对角线上有非0元素的矩阵称为对角矩阵
np.identity       #同上
np.linalg.inv(a)  #求矩阵a的逆矩阵
np.trace          #矩阵的迹(即对角线元素之和)
numpy.matrix.getH #共轭转置
np.ones           #返回一个矩阵元素全为1
numpy.linalg.det  #计算矩阵的行列式

np.random.uniform(low=0.0, high=1.0, size=None) #从均匀分布中取样,size为返回array元素的个数
np.linalg.svd              #奇异值分解
np.mat             #将输入转换为矩阵对象

np.transpose       #矩阵转置,np.transpose(a)相当于a.T
np.sign(x)            #T函数返回 -1 if x < 0, 0 if x==0, 1 if x > 0. nan if x is nan.
np.matmul             # 两个矩阵之间的积

numpy.random.normal       #生成高斯矩阵
numpy.random.choice       #从序列中随机选取
numpy.asarray             #将python list转换为numpy array


np.unique(a)              #返回去重后的array

rng = np.random.RandomState(0)
X = rng.rand(10, 2000)


In:np.linspace(0,10,9)       #在区间[0,10]中,返回含有9个元素的等差数组
Out:array([ 0.  ,  1.25,  2.5 ,  3.75,  5.  ,  6.25,  7.5 ,  8.75, 10.  ])

In:np.arange(0,10,9)         #返回在区间[0,10],步长为9的数组
Out: array([0, 9])


In [43]: b = np.array([[1,2,3],[4,5,6]])

In [44]: b.reshape(3,-1)   #-1会被自动识别为2
Out[44]:
array([[1, 2],
       [3, 4],
       [5, 6]])

In [45]: b.reshape(-1,3) #-1会被自动识别为2
Out[45]:
array([[1, 2, 3],
       [4, 5, 6]])



np.var                             #方差
In [126]: a = np.array([[1, 2], [3, 4]])

In [127]: np.var(a)   #求展开后所有数的方差
Out[127]: 1.25

In [128]: np.var(a, axis=0)    #按列计算方差
Out[128]: array([1., 1.])

In [129]: np.var(a, axis=1)    #按行计算方差
Out[129]: array([0.25, 0.25])


np.cov                             #协方差


np.tile(A, reps) 根据reps重复A生成一个矩阵,reps为(行数,列数),可把A看作一个元素
In [165]: a = np.array([1,2,3])
In [166]: d = np.tile(a,(3,2))

In [167]: d
Out[167]:
array([[1, 2, 3, 1, 2, 3],
       [1, 2, 3, 1, 2, 3],
       [1, 2, 3, 1, 2, 3]])


# 求矩阵a的秩
In [3]: a
Out[3]:
array([[ 2, -1,  0,  3, -2],
       [ 0,  3,  1, -2,  5],
       [ 0,  0,  0,  4, -3],
       [ 0,  0,  0,  0,  0]])

In [4]: np.linalg.matrix_rank(a)
Out[4]: 3



# nonzero 返回非零元素的下标
In [1]: a = np.array([0,2,0])

In [2]: np.nonzero(a)
Out[2]: (array([1]),)

In [3]: a[np.nonzero(a)]        # 取数组a的非零元素
Out[3]: array([2])

In [4]: x = np.array([[1, 0, 0], [0, 2, 0], [1, 1, 0]]) # 二维数组

In [5]: x
Out[5]:
array([[1, 0, 0],
       [0, 2, 0],
       [1, 1, 0]])

In [6]: np.nonzero(x)
Out[6]: (array([0, 1, 2, 2]), array([0, 1, 0, 1]))


# np.multiply(x, y) == x * y
In [120]: x = np.array([1, 2, 3])
In [121]: y = np.array([4, 5, 6])

In [122]: x *y
Out[122]: array([ 4, 10, 18])

In [123]: np.multiply(x, y)
Out[123]: array([ 4, 10, 18])


# np.mean 求均值
>>> a = np.array([[1, 2], [3, 4]])           #求所有数的均值
>>> np.mean(a)
2.5
>>> np.mean(a, axis=0)                      # 对列求均值
array([ 2.,  3.])

>>> np.mean(a, axis=1)                      # 对行求均值
array([ 1.5,  3.5])


In [132]: a = np.array([[1, 2], [3, 4]])
In [132]: ma = np.mat(a)

In [133]: ma
Out[133]:
matrix([[1, 2],
        [3, 4]])

In [134]: ma.A                       # 返回array形式
Out[134]:
array([[1, 2],
       [3, 4]])