Numpy笔记

一、Numpy库
import numpy as np
(1)①array函数:用于创建数组,接受一切序列型的对象,转换为数组或者是多位数组,会为这个数组推断出一个较为合适的数据类型 。numpy.array(序列)
②arange函数:类似range函数,为numpy的内置函数,支持步长·np.arange(first,last,step)

(3)astype 可以明确的将一个数组的一个dtype转换成另一个dtype

 arr8 = np.array([1.1,2.2,3],dtype=np.int32) 
>>>array([1, 2, 3])
float_arr8 = arr8.astype(np.float64) 
float_arr8 
>>>array([1., 2., 3.]) 
float_arr8 .dtype 
>>>dtype('float64')

如果一个字符串数组表示的全是数字,也可以用astype将其转化为数值形式

arr_str1 = np.array([['1','2','3'],['4','5','6']]) 
arr_str2 = arr_str1.astype(np.float) 
arr_str2 
>>>array([[1., 2., 3.], [4., 5., 6.]])

(4)数组的切片返回的是源数据的视图,数组的花式索引和布尔索引返回的是源数据的·副本,数组的转置返回的是源数据的视图。

(5)reshape(个数,n行,m列) 函数功能:给予数组一个新的形状,而不改变它的数据

(6)数组转置和轴对称

arr = np.arange(16).reshape(2,2,4)
arr
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7]],

       [[ 8,  9, 10, 11],
        [12, 13, 14, 15]]])

①transpose()函数:

arr.transpose((1,0,2))
array([[[ 0,  1,  2,  3],
        [ 8,  9, 10, 11]],

       [[ 4,  5,  6,  7],
        [12, 13, 14, 15]]])

可以看到,创建的arr数组中的值需要用三个位置坐标表示比如arr[0,1,1] 代表5,arr[1,0,2] 代表10,,则在transpose中第一个位置坐标表示为‘0’,第二个为‘1’,第三个为‘2’,arr.transpose(1,0,2) 则表示将数组中所有元素的第一个位置坐标和第二个位置坐标翻转。以此类推数组中元素需要用n个坐标表示,则每个坐标在transpose中分别表示为0–>n-1,改变相应坐标的位置则数组将会进行相应的转置。
②T:把所有元素的位置坐标颠倒

arr.T
array([[[ 0,  8],
        [ 4, 12]],

       [[ 1,  9],
        [ 5, 13]],

       [[ 2, 10],
        [ 6, 14]],

       [[ 3, 11],
        [ 7, 15]]])
arr.transpose((2,1,0))
array([[[ 0,  8],
        [ 4, 12]],

       [[ 1,  9],
        [ 5, 13]],

       [[ 2, 10],
        [ 6, 14]],

       [[ 3, 11],
        [ 7, 15]]])

③swapaxes()函数:轴对称

arr.swapaxes(1,2)
array([[[ 0,  4],
        [ 1,  5],
        [ 2,  6],
        [ 3,  7]],

       [[ 8, 12],
        [ 9, 13],
        [10, 14],
        [11, 15]]])
arr.transpose(0,2,1)
array([[[ 0,  4],
        [ 1,  5],
        [ 2,  6],
        [ 3,  7]],

       [[ 8, 12],
        [ 9, 13],
        [10, 14],
        [11, 15]]])

可以看到swapaxes()括号中的数字也同为数组元素坐标对应的所在的列,只不过这两个是需要对称转置的列!!!

(7)通用函数
① 元素级运算(一元)函数:np.sqrt(数组)np.exp(数组)
②二元函数:np.add() np.maximum()
point_part,int_part = np.modf() 可以返回两个数组

(8)利用数组进行数据处理
用数组表达式的代替循环的做法,通常被称为矢量化。

①meshgrid()函数:
用法:
[X,Y] = meshgrid(x,y)
[X,Y] = meshgrid(x) 与 [X,Y] = meshgrid(x,y)等同
[X,Y] = meshgrid(x,y)将x和y定义的区域转换成矩阵X和Y,其中·矩阵X的行向量是向量x的简单复制,矩阵Y的列向量是向量y的简单复制(X和Y均为数组)
设向量x的长度为m,向量y的向量为n,则最终生成的矩阵X和Y维度都为n*m矩阵

x = np.arange(-5,5)
y = np.arange(0,10)
X,Y = np.meshgrid(x,y)
X
array([[-5, -4, -3, -2, -1,  0,  1,  2,  3,  4],
       [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4],
       [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4],
       [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4],
       [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4],
       [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4],
       [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4],
       [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4],
       [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4],
       [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4]])
Y
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
       [3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
       [4, 4, 4, 4, 4, 4, 4, 4, 4, 4],
       [5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
       [6, 6, 6, 6, 6, 6, 6, 6, 6, 6],
       [7, 7, 7, 7, 7, 7, 7, 7, 7, 7],
       [8, 8, 8, 8, 8, 8, 8, 8, 8, 8],
       [9, 9, 9, 9, 9, 9, 9, 9, 9, 9]])

②where函数:numpy.where(条件,参数1,参数2) 函数是 x if condition else y 的矢量化版本,意为:如果满足条件则选择参数1,否则选择参数2,返回一个数组。where函数中可以传入两个数组numpy.where(condition,xarr,yarr) 、可以传入两个标量numpy.where(condition,number,number) 、可以传入一个标量和一个数组numpy.where(condition,number,array)numpy.where(condition,array,number)
③sum函数、mean函数和std函数 :均只产生最终结果 - - 称为聚合
sum()函数:接受一个axis参数numpy.sum(array) 未传入axis参数则为求全体数组的和;numpy.sum(array,axis = 0) axis=0压缩行,计算每列的和;numpy.sum(array,axis=1) axis=1压缩列,求每行的和
mean()函数:接受一个axis参数:numpy(array) 未传入axis参数则求全体数组的平均数;numpy.mean(array,axis=0) axis=0压缩行,求每列的平均数;numpy.mean(array,axis=1) axis=1压缩列,求每行的平均数。
std()函数:求标准差。意义与用法与上两种类似。
④cumsum函数和cumprod函数 :产生一个由中间结果组成的数组
cumsum()函数:累加函数。同样接受axis参数,作用同上。计算数组依次累加的各结果
cumprod()函数:累乘函数。同样接受axis参数,作用同上。计算数组依次累乘的结果。
这里写图片描述
这里写图片描述

⑤用于布尔型数组的方法:sum(),any()和all()
sum():用于对布尔型数组中的Ture值计数
any():用于检测数组中是否存在一个或多个Ture
all():用于检测数组中的值是否都为True
⑥排序
numpy数组可以通过sort方法进行排序
array.sort() 对数组进行就地排序,numpy.sort(array) 返回的是数组的排序副本,不会改变数组本身。
sort方法有axis可选参数,sort(0) 表示对列进行由小到大排序;sort(1) 表示对行进行由小到大排序
⑦数组的集合运算:均返回已拍完序的有序结果
unique(x) 计算x中唯一元素,并返回有序结果
insterect1d(x,y) 求x和y的交集,计算x和y中的公共元素,并返回有序结果
union1d(x,y) 求x和y的并集,并返回有序结果
in1d(x,y) 判断y中元素是否存在于x中,返回布尔型数组
setdiff1d(x,y) 集合的差运算,返回在x中但不在y中的元素
setxor1d(x,y) 集合的对称差,返回存在于一个数组中但不存在与另一个数组中的元素
(9)用于数组的文件输入输出
默认情况:数组是以未压缩的原始二进制文件格式在扩展名为.npy的文件中的。使用numpy.save(文件名,array) 将一个数组写入文件,文件路径会自动加上.npy ;使用numpy.load(文件名.npy) 读文件。
若将多个数组保存到一个未压缩的文件,将数组以关键字参数的形式传入:numpy.savez(文件名,keyN=arrayN) 会自动加上.npz 后缀;加载.npz 文件,会得到类似字典的对象,使用字典查询的方法对象名=[key] 得到关键字为key的相应数组输出

(10)线性代数
①矩阵的乘法
dot()函数:矩阵的点积numpy.dot(array1,array2array1.dot(array2)array1 @ array2

矩阵的运算
(11)伪随机数生成
另写一篇博客以免用到的时候找不到!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值