numpy(numerical python简称) 的核心内容是narray(多维数组),记录numpy的用法

  • 创建数组

(1) 直接导入

import numpy as np
vector = np.array([1,2,3,4])
maxtrix = np.array([[1,2],[3,4],[5,6]])

(2) 用list的方式来创建数组

nparray = np.array([i for i in range(10)])

     结果:

numpy和python匹配_数组

(3) numpy 内置方法来创建数组

#创建10个零元素的向量
np.zeros(10,dtype=int) #dtype指定数据类型,默认是float64
np.zeros(10) #数据类型是float64

#创建3x4的零矩阵
np.zeros(shape=(3,4))
np.zeros((3,4))
np.zeros([3,4])

#创建元素为1的数组
np.ones((3,4))#3x4 全1的二维数组,数据类型是float64

#创建全部为指定值的数组
np.full((3,5),121) #3x5 全为121的二维数组,数据类型是int(121是int)

#创建指定范围的数组
np.arange(0,20,2)#前2个参数数范围(前闭后开),第3个参数是步长2,默认是1,返回的结果是:array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])
np.linspace(0,20,5)#[0,20]分成5等分 返回结果:array([ 0.,  5., 10., 15., 20.])

#random创建数组
np.random.randint(0,10,10) #产生一个0~10范围内的10个随机数
np.random.randint(0,10,size=(3,5))#创建一个3x5的数组,数组元素是范围在[0,10)内的随机数
  • Numpy的方法

(1)reshape(row,column)

  将array改成row X colum的数组

a = np.arange(15).reshape(3,5) 
#执行结果
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]

(2)shape

  获取array的行数和列数

a = np.arange(15).reshape(3,5) 
print(a.shape)
##执行结果:(3,5)

(3)ndim

  获取array的维数,向量是1维,矩阵是2维。。。

x = np.arange(15)
print(x.ndim) ##执行结果是1
X = x.reshape(3,5)
print(X.ndim) #执行结果是2
  •  Numpy索引
matrix = np.array([[1,2,3],[20,30,40]])
print(matrix[0,1]) #取第0行第1列的元素:2
print(matrix[0][1])#和上面一样:2

#切片取
matrix = np.array([[5,10,15],[20,25,30],[35,40,45]])
print(matrix[:,1]) #取第1列的所有元素
print(matrix[:,0:2])#取第0列和第1列所有元素
print(matrix[1:3,:])#取第1行和第2行的所有元素
print(matrix[1:3,0:2])#取第1行第0~1列和第2行第0~1列的所有元素
  • Numpy矩阵运算

(1)算术运算:加,减,乘,除,平方等等。算术运算都是对元素做处理(elementwise)

numpy和python匹配_numpy和python匹配_02

 

numpy和python匹配_数组_03

 

numpy和python匹配_随机数_04

 

numpy和python匹配_数据类型_05

 

numpy和python匹配_数据类型_06

(2)矩阵乘法

mymatrix = np.array([[1,2,3],[4,5,6]])
a = np.array([[1,2],[3,4],[5,6]])
print(mymatrix.shape[1] == a.shape[0]) 
print(mymatrix.dot(a))
print(mymatrix)

numpy和python匹配_数据类型_07

(3) 矩阵的转置

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

numpy和python匹配_数组_08

(4) 矩阵的逆

import numpy.linalg as lg

A = np.array([[0,1],[2,3]])
invA = lg.inv(A)
print(A)
PRINT(A.dot(invA))

numpy和python匹配_数组_09

  • Numpy数据类型转换

    numpy的数据类型在定义的时候,可以通过参数dtype设定,还可以通过参数astype来转换

vector = np.array(['1','2','3'])
vector = vector.astype(float)
print(vector.dtype) #float64
  • Numpy的统计计算方法
##sum():计算矩阵元素和
matrix = np.array([[5,10,15],[20,10,30],[35,40,45]])
matrix.sum()#结果是210

matrix.sum(axis=0)#返回每列总和,结果是 array([35, 40, 45])
matrix.sum(axis=1)#返回每行总和,结果是 array([ 30,  60, 120])

#max():取最大值
matrix.max()#返回最大值,结果是45
matrix.max(axis=0)#返回每一列的最大值,结果是array([35, 40, 45])
matrix.max(axis=1)#返回每一行的最大值,结果是array([15, 30, 45])

#mean():平均值
matrix.mean()#返回最大值,结果是23.333333333333332
matrix.mean(axis=0)#返回每一列的最大值,结果是array([20., 20., 30.])
matrix.mean(axis=1)#返回每一行的最大值,结果是array([10., 20., 40.])
  • Numpy的arg运算

(1) argmax函数:求数组中最大值的下标

(2) argmin函数:求数组中最小值的下标

matrix = np.array([[5,10,15],[20,10,30],[35,40,45]])
print(np.argmax(matrix))#结果:8
print(np.argmin(matrix))#结果:0

(3) argsort()函数:返回从小到大的索引值

x = np.arange(15)
print(x)
np.random.shuffle(x)
print(x)
sx = np.argsort(x)
print(sx)
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
[11 13 14  7  4 12  1 10  2  0  8  6  3  9  5]
[ 9  6  8 12  4 14 11  3 10 13  7  0  5  1  2]
  • Numpy fancyindexing

  通过索引取一个值,比如x[0]取第0个值,如果想要返回第3个,第5个等,需要用fancyindexing

x = np.random.randint(0,15,15)
ind = [3,5,8]
print(x)
print(x[ind])
[ 4  3  1  5 12  8 14 11 13  9  0  6 10  2  7]
[[4 1]
 [3 5]]
  • Numpy数组的比较

  返回False/True

matrix = np.array([[5,10,15],
                [20,25,30],
                [35,40,45]])    
m = (matrix == 25)
print(m)
[[False False False]
 [False  True False]
 [False False False]]