NumPy 基础知识

 概括

Numpy 定义了一个N维数组对象,它是一个一系列相同类型元素组成的数组集合。数组中的每个元素都占有大小相同的内存块,可以使用索引或切片的方式获取数组中的每个元素。

ndarray 对象有一个dtype属性,该属性用来描述元素的数据类型。

创建Numpy对象

通过Numpy 的内置函数 array()可以创建ndarray对象,其语法格式如下:

numpy.array(object,dtype = True,copy = True,order = None)

  1. object :表示一个数组序列
  2. dtype:可选参数,可以更改数组的数据类型
  3. copy:可选参数,表示数组能否被复制,默认True。
  4. order:以哪种内存布局创建数组,有3个可选值,分别是C(行序列)/F(列序列)/A(默认)

reshape数组变维

数组的形状指的是多维数组的行数和列数。

Numpy模块提供reshape()函数可以改变多维数组行数和列数,从而达到数组变维的目的。

reshape()函数可以接受一个元组作为参数,用于指定了新数组的行数和列数。

import numpy as np

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

a_d = a.reshape(2,3)

print(a_d)

结果:[ [1,2,3]

[4,5,6]]

Numpy数组属性:

shape 属性的返回值是一个由数组维度构成的元组,该属性可以用来调整数组维度的大小。

.ndim 属性返回的是数组的维数

.fromiter() 该方法可以把迭代对象转换为ndarray数组,其返回值是一个一维数组

Numpy 创建区间数组

在 Numpy中,可以使用arange()来创建给定数值范围的数组

语法:numpy.arange(start, stop, step, dtype)

根据start与stop指定的范围以及step步长值,生成一个ndarray数组

.linspace() 表示在指定的数值区间内,返回均匀间隔的一维等差数组,默认为50份,

语法:np.linspace(start,stop,num = 50,endpoint=True,retstep=False,dtype = None)

.logspace()该函数同样返回一个ndarray数组,它用于创建等比数组。

语法:np.logspace(start, stop, num = 50,endpoint=True,base = 10.0,dtype = None)

Numpy 索引和切片:

1.基本切片:

NumPy内置函数slice()可以用来构造切片对象,该函数需要传递三个参数值分别是start(起始索引)、stop(终止索引)和step(步长),通过它可以实现从原数组上切割出一个新数组。

2.冒号切片简单说明:

如果仅输入一个参数,则返回与索引相对应的元素。

如果在其前面插入“ :”,如[:9],则会返回0-8的所有数字(不包含9)

如是[2:]则会返回2-9之间的数字

如果在两个参数之间,如[2:9],则对两个索引值之间的所有元素进行切片(不包括停止索引)

3.多维数组切片:

NumPy高级索引:

高级索引返回的是数组的副本(深拷贝),切片操作返回的是数组的视图(浅拷贝)

1.整数数组索引:

整数数组索引,它可以选择数组中的任意一个元素,比如选择第几行第几列的某个元素。

2.获取4*3数组中的四个角上元素,他们对应的行索引是[0,0],[3,3],列索引是[0,2]和[0,2]

3.也可以将切片所使用的 :或省略号...与整数数组索引结合使用。

4.布尔数组索引:

NumPy 广播机制:

NumPy中的广播机制旨在解决不同形状数组之间的算术问题。

我们知道,如果进行运算的两个数组形状完全相同,它们直接可以做相应的运算。例如:

为了保持数组形状相同,NumPy设计了一种广播机制,核心是对形状较小的数组,在横向或纵向上进行一定次数的重复,使其与形状较大的数组拥有相同的维度

NumPy 数组遍历:

NumPy 提供了一个nditer迭代器对象,它可以配合for循环完成对数组元素的遍历。

1.遍历顺序:

在内存中,NumPy数组提供了两种存储数据的方式,分别是C-order(行优先顺序)与Fortrant-order(列优先顺序)。

从示例1,2的输出结果可以看出,a和a.T的变量顺序是一样的,也就是说,它们在内存中的存储顺序是一样的。

通过示例3可知a.T.copy(order = 'c')的遍历结果与示例1,2的数组遍历结果不一样。原因就是它们在内存中的存储方式不一样。

2.指定顺序遍历:

3.迭代多个数组:

NumPy 相关数组操作:

1.数组变维操作:

reshape:在不改变数组元素的条件下,修改数组的形状。

flat:返回是一个迭代器,可以用for循环遍历其中的每一个元素。

flatten:以一维数组形式返回一份数组的副本,对副本的操作不会影响到原数组。

ravel:返回一个连续的偏平数组(即展开的一维数组),与flatten不同,它返回的是数组视图。

numpy.ndarray.flat:返回一个数组迭代器

numpy.ndarray.flatten():返回一份数组副本,对副本修改不会影响原始数组。

numpy.ravel():将多维数组中的元素以一维数组的形式展开,该方法返回数组的视图,如果修改,则会影响原始数组。

2.数组转置操作:

transpose:将数组的维度值进行对换,比如二维数组维度(2,4)使用该方法后为(4,2)

ndarray.T:与transpose方法相同

rollaxis:沿着指定的轴向后滚动值规定的位置

swapaxes:对数组的轴进行对换

numpy.swapaxes():该方法用于交换数组的两个轴

语法:numpy.swapaxes(arr,axis1,axis2)

numpy.resize():返回指定形状的新数组。

numpy.append():在数组的末尾添加值,它返回一个一维数组。

numpy.insert():表示指定的轴,在给定索引值的前一个位置插入相应的值,如果没有提供轴,则输入数组被展开为一维数组。

numpy.unique():用于删除数组中重复的元素

NumPy 位运算

1.bitwise_and():该函数对数组中整数的二进制数进行“按位与”运算。

如果两个的二进制相对应的位都为1,那么执行位与运算后,该位的结果就为1,否则就为0

2.bitwise_or():对数组中整数的二进制数执行“按位或”运算 。

对于按位或运算,只要相对应的二进制位上有一个为1,那么它的运算结果就位1,否则为0

3.Invert():该方法对数组中整数做按位取反运算,也就是0变成1,1变为0。

4.left_shift():该方法把数组元素的二进制数向左移动到指定位置,而其返回值所对应的二进制。则会从右侧追加相等数量的0

np.binary_repr:函数用来设置二进制数的位数。

right_shift():该方法把数组元素的二进制数向右移动到指定位置,而其返回值所对应的二进制。则会从左侧追加相等数量的0。同left_shift相反。

NumPy字符串处理函数:

add():对两个数组相应位置的字符串做连接操作

multiply():返回多个字符串副本

center():用于居中字符串,并将指定的字符串,填充在原字符串的左右两侧

capitalize():将字符串第一个字符串转换为大写。

title():标题样式,将每个字符串的第一个字母转为大写形式。

lower():将数组中所有的字符串的大写转换为小写

upper():将数组中所有的字符串的小写转换为大写

split():通过指定分隔符对字符串进行分割,并返回一个数组序列,默认分隔符为空格。

splitlines():以换行符作为分隔符来分割字符串,并返回数组序列。

strip():删除字符串开头和结尾处的空字符。

join():返回一个新的字符串,该字符串是以指定分隔符来连接数组中的所有元素。

replace():用新的字符串替换原数组中指定的字符串

decode():用指定的编码格式对数组中的元素依次执行编码操作

encode():用指定的编码格式对数组中的元素依次执行编码操作

NumPy数学函数

三角函数:numpy中提供了用于弧度计算的sin()(正弦)、cos()(余弦)、tan()(正切)

舍入函数:

numpy.around():该函数返回一个十进制数,并将数值四舍五入到指定的小数位上。

numpy.floor():该函数表示对数组中的每个元素向下取整数,即返回不大于数组中每个元素值的最大整数。

numpy.ceil():与函数floor相反,表示向上取整。

NumPy算术运算:

numpy.reciprocal():该函数对数组中的每个元素取倒数,并以数组的形式将它们返回。

numpy.power():该函数将a数组中的元素作为底数,把b数组中与a相对应的元素作幂,最后以数组形式返回两者的计算结果。

numpy.mod():返回两个数组相对应位置上元素相除后的余数,

NumPy统计函数:

numpy.amin()和amax()这两个函数用于计算数组沿着指定轴的最小值和最大值:

.amin():沿指定的轴,查找数组中元素的最小值,并以数组的形式返回

.amax():沿指定的轴,查找数组中元素的最大值,并以数组的形式返回

numpy.ptp():用于计算数组元素中最值之差值,也就是(最大值-最小值)。

numpy.percentile():该函数表示沿指定轴,计算数组中任意百分比分位数。

语法:numpy.percentile(a,q,axis)

a:输入数组

q:要计算的百分位数,在0~100之间

axis:沿着指定的轴计算百分位数

numpy.median()用于计算a数组元素的中位数:

numpy.mean()该函数表示沿指定的轴,计算数组中元素的算术平均值(即:元素之总和除以元素数量)

numpy.average():加权平均值是将数组中各数值乘以相应的权数,然后再对权重值求总和,最后以权重总和除以总的单位数

numpy.average()根据在数组中给出的权重,计算数组元素的加权平均值。该函数可以接受一个轴参数axis,如果未指定,则数组被展开为一维数组。

方差:np.var():

在统计学中也称样本方差,首先要知道全体样本的平均值,然后再求的每个样本值与均值之差的平方和,最后对差的平方和求均值。

s^2 = (x1-M)^2+(x2-M)^2+(x3-M)^2+......+(xn-M)^2/n

标准差:np.std():

标准差是一组数据平均值分散程度的一种度量。它是方差的平方根,方差是每个样本值与全体样本值的平均数之差的平方值的平均数。换句话说,标准差是描述数据点相对于平均值离散程度的度量。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据牧马人

你的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值