Numpy使用手册

注:本文章所有的内容整理都来源于imooc 夏正东老师讲述的《Numpy基础入门》

Numpy

Numpy

数组对象特点

用于存放同类型元素的集合

每个元组在内存中都有想用存储大小的区域
array()函数
我们可以通过使用array函数来创建一位数组
numpy.array(object)
其中,参数object类型可以是列表或者元组。

数组和类别的区别

数组只能保存相同的数据类型,而列表可以保存任何类型的数据
实例代码
import numpy as np
a = np.array([1,3,5,7])
print(a)
===>[1,3,5,7]

数组的数据类型

numpy指定数据类型
import numpy as np
a=np.array([1,3,5,7],dtype=np.int64) #指定数据类型
print(a,a.dtype) #查询数据类型

其他创建一维数组的函数

arange() 函数

我们可以使用arange()函数创建数值并返回数组对象

numpy.arange(start,stop,step,dtype)
start:开始值,默认值为0,包含开始值
stop:结束值,不包含结束值
step:步长,默认值为1,该值可以为负数
dtype:数组元素类型
linspace() 函数

我们可以使用linspace()函数创建等差数组

numpy.linspace(start,stop,num,endpoint,retstep,dtype)
num:设置生成的元素个数
endpoint:设置是否包含结束值,False是不包含,True是包含,默认值是True
retstep:设置是否返回步长(即公差),False是不返回默认值是False,True是返回,当值为True时,返回值是二元组,包括数组和步长
logspace()函数

我们可以用logspace()函数创建等比数组

numpy.logspace(start,stop,num,endpoint,base,dtype)
start:开始值,值为base**start
stop:结束值,值为base**stop
base:底数

二维数组

二维数组

array()函数

我们可以通过使用array函数来创建二维数组

numpy.array(object)
其中,参数object类型可以是列表或者元组。
例子
import numpy as np
a = np.array([[1,2,3],
             [4,5,6],
             [7,8,9]])

print(a) ====>[[1 2 3]
               [4 5 6]
               [7 8 9]]

数组转置

我们可以使用数组对象的属性T,将数组进行转置

转置前:两行四列
转置后:四行两列

其他创建二维数组的函数

ones()函数
numpy.ones(shape,dtype=None)
shape:数组的形状 可以为列表也可以为元组
zeros()函数

根据指定的形状和数据类型生成全为0的数组

numpy.zeros(shape,dtype=None)
full()函数

根据指定的形状和数据类型生成数组,并用指定的数据进行填充

numpy.full(shape,fill_value,dtype=None)

fill_value:指定填充的数据

identity()函数

创建单位矩阵(即对角线元素为1,其他元素为0的矩阵)

numpy.identity(n,dtype=None)

n:数据形状

数组的访问

索引访问

一维数组的索引访问

array[]

二维数组的索引访问

array[][]

array[ , ]

切片访问

一维数组的切片访问

ndarray[ start:end ]

ndarray[ start: end :step ]

二维数组的切片访问

ndarray[ 所在0轴切片,所在1轴切片 ]

布尔索引

注意:布尔索引必须与要索引的数组形状相同,否则会引发IndexError错误。
布尔索引返回的新数组是原数组的副本,与原数组不共享相同的数据空间,即新数组的修改不会影响原数组,这是作为的深层复制

例子
import numpy as py
a1=np.array([1,2,3,4])
b1=np.array([True,False,True,False])
print(a1[b1])========>[1 3]

什么是花式索引

索引为整数列表

索引为一维整数数组

索引为二维整数数组

注意点:

花式索引返回的新数组与花式索引数组形状相同
花式索引返回的新数组与布尔索引类似,属于深层复制
二维数组上每一个轴的索引数组形状相同
例子
#一维数组的花式索引
import numpy as np
a1=np.array([1,2,3,4,5,6])

b = [1,2,3,4]
print(a1[b])

c = np.array([1,2,3,4])
print(a1[c])

d = np.array([[1,2],
              [3,4]])

print(a1[d])

#二维数组的花式索引
a2 = np.array([[1,2,3],
              [4,5,6],
              [7,8,9]])
m=[1,2]
n=[0,1]
print(a2[m,n])
#或者
print(a2[m][n])

数组的操作

连接数组

import numpy as np
concatenate()函数

该函数指沿指定的轴连接多个数组

numpy.concatenate((a1,a2,...),axis)

a1,a2 是要连接的数组。注意,除了指定轴外,其他轴元素个数必须相同。
axis 是沿指定轴的索引,默认为0轴。

例子
a = np.array([[1,2],
              [3,4]])
b = np.array([[1,2]])

ab = np.concatenate((a,b))
#或者
#ab = np.concatenate((a,b),axis=0)  报错
# 因为0轴上的个数不相同
print(ab)
vstack()函数

沿垂直堆叠多个数组,相当于concatenate()函数axis=0的情况

numpy.vstack((a1,a2))

注意,1轴上元素个数相同

hstack()函数

沿水平堆叠多个数组,相当于concatenate()函数axis=1的情况

numpy.hstack((a1,a2))

注意,0轴上元素个数相同

分割数组

split()函数

该函数指沿指定的轴分割多个数组

numpy.split(ary,indices_or_sections,axis)

ary是要被分割的数组
indices_or_sections 是一个整数或数组,如果是整数就用该数平均分割;如果是数组,则为沿指定轴的切片操作
axis 指轴的分割方向,默认为0轴

vsplit()函数

该函数指沿垂直方向分割数组,相当于split()函数axis=0情况

numpy.vsplit(ary,indices_or_sections)
hsplit()函数

该函数指沿水平方向分割数组,相当于split()函数axis=1的情况

numpy.hsplit(ary,indices_or_sections)

数组的算数运算

例子
import numpy as np
a1 = np.array([1,2,3])
b1 = np.array([4,5,6])
print(a1+b1)

数组广播

数组与标量或者不同形状的数组进行算数运算的时候,就会发生数组广播

数组与标量

数组与标量进行算数运算,相当于先将标量广播成相同形状的数组,然后再进行算数运算

数组与数组

数组与不同形状的数组进行算数运算时,会发生广播,需遵守以下广播原则

(1)先比较形状,再比较维度,最后比较对应轴长度
(2)如果两个数组维度不相等,会在维度较低数组的形状左侧填充1,直到维度与高纬度数组相等
(3)如果两个数组维度相等时,要么对应轴的长度相同,要么其中一个轴长度为1,则兼容的数组可以广播,长度为1的轴会被扩展

数组的常用函数

随机数函数

rand()函数

该函数返回[0.0,1.0)的随机浮点数,即大于等于0.0,且小于1.0的随机浮点数

numpy.random.rand(d0,d1,...,dn)

d0,d1,…,dn表示数组的形状

randint()函数

该函数返回[low,high)的随机整数,如果high省略,则返回[0,low)的随机整数

numpy.random.randint(low,high,size,dtype)

size表示数组的形状

normal()函数

该函数返回正态分布随机数

numpy.random.normal(loc,scale,size)

loc表示平均值
scale表示标准差

randn()函数

该函数返回标准正态分布随机数,即平均数为0,标准差1的正太分布随机数

numpy.random.randn(d0,d1,...,dn)

排序函数

sort() 函数

按照轴对数组进行排序,即轴排序

numpy.sort(a,axis=-1,kind='quicksort',order=None)

a 表示要排序的数组
axis 表示排序的轴索引,默认是-1,表示最后一个轴
kind 表示排序类型。quicksort:快速排序,为默认值,速度最快;mergrsort:归并排序;heapsort:堆排序
order 表示排序字段

argsort()函数

按照轴对数组进行排序索引,即轴排序索引

numpy.argsort(a,axis=-1,kind='quicksort',order=None)

a 表示要排序的数组
axis 表示排序的轴索引,默认是-1,表示最后一个轴
kind 表示排序类型。quicksort:快速排序,为默认值,速度最快;mergrsort:归并排序;heapsort:堆排序
order 表示排序字段

聚合函数

求和

sum()函数
numpy.sum(a,axis=None)
nansum()函数

该函数忽略NaN

numpy.nansum(a,axis=None)
sum()方法
numpy.ndarray.sum(axis=None)

求最大值

amax()函数
numpy.amax(a,axis=None)
nanmax()函数

该函数忽略NaN

numpy.nanmax(a,axis=None)
max()方法
numpy.ndarray.max(axis=None)

求最小值

amin()函数
numpy.amin(a,axis=None)
nanmin()函数
numpy.nanmin(a,axis=None)
min方法
numpy.ndarray.min(axis=None)

求平均值

mean()函数
numpy.mean(a,axis=None)
nanmean()函数
numpy.nanmean(a,axis=None)
mean()方法
numpy.ndarray.mean(axis=None)

求加权平均值

average()函数
numpy.average(a,axis=None,weights=None)

weights 表示权重

数组的保存和读取

数据保存

save()函数

该函数可以将一个数组保存至后缀名为".npy"的二进制文件中

numpy.save(file,arr,allow_pickle=True,fix_imports=True)

file 表示文件名/文件路径
arr 表示要存储的数组
allow_pickle 为布尔值,表示是否允许pickle来保存数组对象
fix_imports 为布尔值,表示是否允许在Python2中读取Python3保存的数据

savez()函数

该函数可以将多个数组保存到未压缩的后缀名为".npz"的二进制文件中

numpy.savez(file)
savez_compressed()函数

该函数可以将多个数组保存到压缩的后缀名为".npz"的二进制文件中

numpy.savez_compressed(file)

数组的读取

load() 函数

读取".npy"和".npz"文件中的数组

numpy.load(file,mmap_mode,allow_pickle,fix_imports)

mmap_mode 表示内存在映射模式,即在读取较大的Numpy数组时的模式,默认情况时None

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值