Numpy学习笔记

mac2024-04-20  3

目录

Numpyndarray对象主要属性:创建方法:广播机制:数组操作数组排序及筛选矩阵代数

Numpy

ndarray对象

包含相同类型数据的数组

主要属性:

size: 数组中元素的总个数 dtype: 数组数据类型 shape: 数组形状,各维度大小,元组 ndim: 数组维数

创建方法:

array: asarray: zeros,ones,eyes,empty: 0,1,对角1,不初始 arange: (start,stop,step,dtype),不包含stop linspace: (start,stop,num=50,endpoint=True) logspace: (start,stop,num=50,endpoint=True,base=10)

广播机制:

不同形状数组运算时启用广播机制,规则如下:

比较数组维度,维度小的在前面补1对齐维度,如(4,3)+(3,),补齐为(1,3)比较各维度,若数组维度相等或者有一个数组维度为1,可以运算,维度为1时会复制第一组值扩充至对应维度

数组操作

reshape

: np.reshape(arr,newshape,order) 这里的order指的是数据的排列顺序,一般是按’C’即行排列,也可以指定按’F’排列

import numpy as np a = np.arange(1, 10, 1).reshape((3, -1)) b = np.arange(1, 10, 1).reshape((3, -1), order='C') c = np.arange(1, 10, 1).reshape((3, -1), order='F') print(a, '\n\n', b, '\n\n', c) # [[1 2 3] # [4 5 6] # [7 8 9]] # # [[1 2 3] # [4 5 6] # [7 8 9]] # # [[1 4 7] # [2 5 8] # [3 6 9]] ravel :

ravel(arr,order),按指定顺序展平数组,(不太懂有啥用)

transpose,T :

倒置数组,同样可以输入order参数

expand_dims :

扩充数组,加入新的轴,newaxis更简洁

import numpy as np a = np.array([1, 2, 3]) b = np.expand_dims(a, axis=0) c = a[np.newaxis, :] d = np.expand_dims(a, axis=1) e = a[:,np.newaxis] print(a.shape, b.shape, c.shape, d.shape, e.shape) # (3,) (1, 3) (1, 3) (3, 1) (3, 1) squeeze :

删除数组中维度为1的维度

import numpy as np a = np.array([1, 2, 3]) b = np.expand_dims(a, axis=0) c = a[np.newaxis, :, np.newaxis] d = b.squeeze() e = c.squeeze() print(a.shape, b.shape, c.shape, d.shape, e.shape) # (3,) (1, 3) (1, 3, 1) (3,) (3,) vstack,hstack :

垂直、水平连接数组

import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6], [7, 8]]) c = np.vstack((a, b)) d = np.hstack((a, b)) print(c, '\n', d) # [[1 2] # [3 4] # [5 6] # [7 8]] # [[1 2 5 6] # [3 4 7 8]] append :

只能通过np.append(arr, values, axis)调用,大小必须相同,不指定axis返回一维数组

import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6], [7, 8]]) print(np.append(a, b)) print(np.append(a, b, axis=0)) print(np.append(a, b, axis=1)) # [1 2 3 4 5 6 7 8] # # [[1 2] # [3 4] # [5 6] # [7 8]] # # [[1 2 5 6] # [3 4 7 8]] around :

np.around(arr,decimals) arr:数组 decimals:小数位数

ceil,floor :

ceil:向上取整,floor:向下取整

数组排序及筛选

sort :

np.sort(arr,axis,kind,order),kind是排序方法,默认‘quicksort’,还有‘mergesort’、‘heapsort’。不指定axis会按照最后一个维度排序

argsort :

形式跟sort没有较大差别,返回的是排序后的元素索引

import numpy as np a = np.arange(10, 0, -1) print(a) print(np.sort(a)) print(np.argsort(a)) # [10 9 8 7 6 5 4 3 2 1] # [ 1 2 3 4 5 6 7 8 9 10] # [9 8 7 6 5 4 3 2 1 0] where :

np.where(condition)——返回满足条件的元素索引

extract :

np.extract(condition,x)——返回满足要求的元素

矩阵代数

Numpy中还有矩阵对象,矩阵库为numpy.matlib,可用此库创建矩阵,也可以用np.mat(arr)创建矩阵 Numpy中矩阵运算库linalg,包含线性代数许多函数,需要时可查相关文档

dot :

点乘,同.*,对于数组而言跟matlab里运算类似

import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6], [7, 8]]) print(a * b) print(np.dot(a, b)) print(np.matmul(a, b)) a = np.mat(a) b = np.mat(b) print(a * b) print(np.dot(a, b)) print(np.matmul(a, b)) # [[ 5 12] # [21 32]] # # [[19 22] # [43 50]] # # [[19 22] # [43 50]] # # [[19 22] # [43 50]] # # [[19 22] # [43 50]] # # [[19 22] # [43 50]]
最新回复(0)