numpy 指令

1.创建numpy数组:

1.1numpy.array(直接把列表转化成数组)

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

表1:numpy.array各参数属性

参数属性
object任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。
dtype数组的所需数据类型,可选。
copy可选,默认为true,对象是否被复制。
orderC(按行)、F(按列)或A(任意,默认)。
subok默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。
ndimin指定返回数组的最小维数。

1.2等差数列建立numpy数组(arange,linspace)

1.2.1 nappy.arange(a,b,c)
arange 一般有三个参数 arange(a,b,c) a为等差数列的首项默认为0,c为公差,默认为1。若数列中的数为x,则x的取值范围为a≤x<b.这个跟range一样是左闭右开的,且,最后面一个数位步长。

1.2.2np.linspace(a,b,c)
跟arange一样linspace也有三个元素,linspace(a,b,c) 但有区别的,a还是一样是首项,但此时b是末项,c是项数,linspace这个函数更好理解,由于项数往往并不与首末项匹配,所以linspace里面所得的数是浮点数。

1.3随机数建立

numpy中的随机数一般有random来生成,主要有整数随机以及正态分布的随机数

1.3.1 numpy.random.rand(a,b)
生成一个数值在[0,1)之间,a行b列的随机数数组

1.3.2 numpy.random.randint(a,b,(c,d))
生成一个数值在[a,b)之间c行d列的数组

1.3.3 numpy.random.normal(E,u,(a,b))
生成一个均值为E,标准差为u,a行b列的数组

1.4填充创建(numpy.zeros,numpy.ones,numpy.fulls)

1.4.1numpy.fulls(shape,fill_value)

输出形状为shape,填充值为fill_value的多维矩阵

1.4.2 全零数组与全一数组的创建(numpy.zeros,numpy.ones).
np.zeros(shape)生成一个shape形状的多维零矩阵

np.ones(shape)生成一个shape形状的多维矩阵,且填充值为1

1.4.3对角创建numpy.eyes(N,M,K=0)
创建一个类单位矩阵,即对角线上为1,其余为0的数组。形状为N行M列,M的默认值与N 相等,k=0为主对角线,正直为上对角线,负值为下对角线

1.4.4 numpy.repeata,repeats,axis()函数 - 复制创建
a为原数组的值,repeats为axis轴上复制的次数。axis默认值为0

1.5不常用的创建

1.5.1等比数组创建numpy.longspace(start,end,num,base)
起始值为base的start次幂,end为base的终止次幂,num为范围内的数值数量,默认为50个

base为 空间底数,即公比默认为10

1.5.2自由创建 numpy.asarray(a)
a为任意形式的输入参数,如列表元组,列表的列表,列表的元组

1.5.3根据数组的形状创建
ones_like(a):根据数组a的形状生成一个全1的数组
zeros_like(a):根据数组a的形状生成一个全0的数组
full_like(a,val):根据数组a的形状生成一个数组,每个元素值都是val

1.5.4根据缓冲区创建numpy.frombuffer(buffer, dtype=float, count=-1, offset=0)
此函数将缓冲区解释为一维数组。 暴露缓冲区接口的任何对象都用作参数来返回ndarray。

numpy.frombuffer(buffer, dtype=float, count=-1, offset=0)

参数 说明
buffer 任何暴露缓冲区借口的对象。
dtype 通常,输入数据的类型会应用到返回的ndarray。
count 需要读取的数据数量,默认为-1,读取所有数据。
offset
需要读取的起始位置,默认为0。

1.5.5根据可迭代对象创建numpy.fromiter(iterable, count = -1)
iterable为任意可迭代对象,count为需要读取的数据数量,默认为-1,读取所有数据。

2.ndarray调整数组结构

2.1. ndarray数组的维度变换

方法说明
.reshape(shape)不改变数组元素,返回一个shape形状的数组,原数组不变
.resize(shape)与.reshape()功能一样,但修改原数组
.swapaxes(ax1, ax2)将数组n个维度中两个维度进行调换
.flatten()对数组进行降维,返回折叠后的一维数组,原数组不变,深拷贝
.ravel()对数组进行降维,返回折叠后的一维数组,原数组改变,浅拷贝

注意:
1)当改变形状时,应该考虑到数组中的元素的个数,确保改变前后,元素总个数相等。
2)reshape(shape)还可以根据数组中元素的总个数、以及其他维度的取值,来自动计算出这个维度的取值。通过-1来实现

2.2 ndarry数组的转置和轴对换(name.T)

二维转置 name. T
多维轴的交换 m = k.transpose((1,0,2)) # m[y][x][z] = k[x][y][z] (0:x, 1:y, 2:z)

2.3 nadarry数组的拼接

2.3.1 vstack:垂直堆叠
垂直堆叠。按照轴的标准看,则是axis=0,即按行拼接,将每一个水平行都堆叠在一起。那么列数必须相等。

2.3.2 hstack:水平堆叠
水平堆叠。按照轴的标准看,则是axis=1,即按列拼接,将每一个垂直列都堆叠在一起。那么
行数必须相等。

2.3.3 numpy.oncatenate([], axis)按轴堆叠
默认axis=0, 从第一层内容对应开始拼接

2.3.4 numpy.c_[a ,b] 水平拼接
和水平堆叠效果一样

2.4 nadarry数组的分割
2.4.1 hsplit:水平方向分成多个水平子数组
numpy.hsplit(ndarry,x):x 为指定均分为几部分,ndarry为要被均分的对象,不可均分则报错
hsplit(ndarray, [x, y]), 用列表代表分割的索引,不一定要均分,ndarry为要被均分的对象

2.4.2 vsplit:分成多个垂直子数组
vsplit(ndarray, x), x指定:均匀分成几部分,ndarry为要被均分的对象,不可均分则报错
vsplit(ndarray, [x, y]), 用列表代表分割的索引,不一定要均分,ndarry为要被均分的对象。

2.4.3 split / array_split(array, indicate_or_sections, axis)
axis指定按照哪一层进行切割,默认从axis=0、第0层为标准进行切割, 即vsplit方法,将垂直方向分成多个垂直子数组

3.数组运算:

3.1 数组简单运算

3.1.1 numpy.sum( narry,axis)
默认axis=0求行和,axis=1 求列和,narry为待求numpy数组

3.1.2 numpy.mean(narry)
求平均值 ,narry为待求numpy数组

3.1.3numpy.title矩阵复制
np.tile(a, (b, c)) # a为原,b为行复制把次数,c为列复制次数。

3.1.4 numpy.argsort(narry)
将元素按照行从小到大排序,返回对应位置元素的下标

3.1.5 ±*/四则运算是简单的对应位置元素的加减乘除运算

3.2 矩阵的运算

3.2.1numpy.mat()
如果使用 np.mat 将二维数组准确定义为矩阵,就可以直接使用 * 完成矩阵乘法

如:np.mat(A) * np.mat(B)

3.2.2转置矩阵
name.T

3.2.3 矩阵求逆
np.linalg.inv(A)

3.2.4矩阵广播运算
可直接简写为a+ b, numpy自动实现广播功能,当参与运算的操作数的维度不一样时。
如代码,他会把不足的矩阵自动广播。

输入
a = np.array([[1, 2, 3],
             [4, 5, 6],
             [7, 8, 9]])
b = np.array([1, 2, 3])
a+b
输出
[[ 2, 4, 6],[ 5, 7, 9],[ 8, 10, 12]])

参考:

NumPy库的介绍与使用(一)

numpy库的使用——超详细

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值