numpy学习笔记

这篇博客详细介绍了numpy库的使用,包括数组对象的创建、索引切片、where语句、数学操作、数组形状调整、数组连接以及内置函数的用法,如排序、统计计算和分位数计算,是Python科学计算和数据分析的重要工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


typora-root-url: 图片


一、第三方库numpy

1、数组对象

1)导入numpy
import numpy as np
2)产生数组
1、从列表传入
l=[0,1,2,3]
a=np.array(l)

a=np.array([1,2,3,4])
2、生成全0数组
np.zeros(参数)
a=np.zeros(zeros(shape,dtype=float,order='C')生成全0数组
参数:
           shape:形状
           dtype:数据类型
           ,可选参数,默认numpy.float64
           order:可选参数,c代表与c语言类似,行优先;F代表列优先
a=np.zeros(10)
3、生成全1数组
np.ones(参数)
a=np.ones(zeros(shape,dtype=float,order='C')生成全1数组
4、填充数组
ndarray.fill(value)
可以使用fill方法将数组设定为指定值

a=np.array([1,2,3,4])
a.fill(2.5)   ##传入的参数类型会按照原数组类型进行转换

与列表不同,数组中要求所有元素的dtype是一样的,如果传入参数的类型与数组类型不一样,需要按照已有的类型进行转换。
5、np.arange([start, ]stop, [step, ]dtype=None)

start:可忽略不写,默认从0开始;起始值
stop:结束值;生成的元素不包括结束值
step:可忽略不写,默认步长为1;步长
dtype:默认为None,设置显示元素的数据类型
6、生成等差数列
np.linspace(start,end,num)

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

endpoint:False,不包含结束
retste:为最后一个值跟最大值的差值
7、生成随机数
numpy.random.randint(low, high=None, size=None, dtype=’l’) 

size:为维度大小

a=np.random.rand(10)  ##生成0-1的10个随机数
b=np.random.randn(10)  ##生成0-1的10个随机数,随机数服从标准正太分布
c=np.random.randint(1,10,10)  ##生成1-10的10个随机整数


np.random.normal(loc=0.0, scale=1.0, size=None)#生成高斯分布的概率密度随机数
loc:float
    此概率分布的均值(对应着整个分布的中心centre)
scale:float
    此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
size:int or tuple of ints
    输出的shape,默认为None,只输出一个值

8、产生多维数组

a=np.array([[arr][arr][arr]])

3)np.array函数

numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
object	必选参数,类型为array_like,可以有四种类型:数组,公开数组接口的任何对象,__array__方法返回数组的对象,或任何(嵌套)序列。	ndarray。满足指定要求的数组对象。
dtype	数据类型,可选
数组所需的数据类型。如果没有给出,那么类型将被确定为保持序列中的对象所需的最小类型。此参数只能用于“upcast”数组。对于向下转换,请使用.astype(t)方法。
copy	bool,可选
如果为true(默认值),则复制对象。否则,只有当__array__返回副本,obj是嵌套序列,或者需要副本来满足任何其他要求(dtype,顺序等)时,才会进行复制。
order	 {‘K’,‘A’,‘C’,‘F’},可选
指定阵列的内存布局。如果object不是数组,则新创建的数组将按C顺序排列(行主要),除非指定了’F’,在这种情况下,它将采用Fortran顺序(专业列)。如果object是一个数组,则以下成立。
subok	可选参数,类型为bool值。如果为True,则子类将被传递,否则返回的数组将被强制为基类数组(默认)。或者说,True:使用object的内部数据类型,False:使用object数组的数据类型。
ndmin	可选参数,类型为int型。指定结果数组应具有的最小维数。

2、数组属性

1)type(ndarray)

查看类型
a=np.array([1,2,3,4])
type(a)

2)ndarray.dtype

ndarray.dtype
查看数组中的数据类型

3)ndarray.shape

查看形状
ndarray.shape

4)ndarray.size

查看数组元素的条目
ndarray.size

5)ndarray.ndim

ndarray.ndim

2、索引和切片

1、基本索引
ndarray[start:end:step]

start可不写,默认从0开始
end可不写,默认到最后
step可不写,默认为1,支持负索引
2、多维数组索引
ndarray[,]
ndarray[::,::]
3、布尔花式索引
mask=np.array([0,2,2,0,0,1,0,0,1,0],dtype=bool)
y=a[mask]
mask必须是布尔数组,长度必须和数组长度相等
4、索引指定位置
a[(0,1,2,3,4),(1,2,3,4,5)]   ##两个括号相对位置的数分别为行标和列标

3、where语句

1、np.where(arr比较)

where函数会返回所有非零元素的索引

a=np.random.randint(1,10,10)
np.where(a>5)
np.where(a>5,1,0)#如果a>5True则1,False0

2、np.argwhere(arr比较)

argwhere放回满足条件的下标

np.argwhere(ser %2==0)

4、数组类型

数组类型
布尔型:bool:占一个字节
整型:int8/16/32/64/128int:和C语言的long一样大
无符号整型:uint8/16/32/64/128,uint:和C语言中的unsigned long一样大
浮点数:float16/32/64float,longfloat:默认为双精度float64,longfloat精度大小与系统有关
复数:complex64/128complex,longconplex:默认为complex128,即实部虚部都为双精度
字符串:string,unicode:可以使用表示一个4字节字符串的数组
对象:object:数组中可以使用任意值
时间:datetime64,timedelta64

1、np.asarray()

a=np.array([1,2,3])
np.asarray(a,dtype=float)

2、ndarray.astype(类型)

##astype方法返回一个新数组
a=np.array([1,2,3])
a.astype(float)astype引用不会对原数组产生影响

4、数组操作

1、数组排序
1)np.sort(ndarray)
##对评分人数排序
np.sort(mv_num)
mv_num  ##sort函数不改变原数组
2)np.argsort(ndarray)
argsort返回从小到大的排列在数组中的索引位置
order=np.argsort(mv_num)
2、数学操作
1、np.sum(ndarray)和
2、ndarray.max()最大值
3、ndarray.min()最小值
4、ndarray.mean()均值
5、ndarray.std()标准差
6、ndarray.var()方差
7、ndarray.cov()相关系数矩阵

5、数组形状

1)ndarray.shape()
2)ndarray.reshape(形状)

6、装置T/transpose()

ndarray.T
ndarray.transpose()

7、数组连接

1、concatenate((a0,a1,a2),axis=0)
concatenate((a0,a1,...,an),axis=0)

axis=0代表往跨行(down),而axis=1代表跨列(across)
使用0值表示沿着每一列或行标签\索引值向下执行方法
使用1值表示沿着每一行或者列标签模向执行对应的方法

注意:这些数组要用()包括到一个元组中去。
除了给定的轴外,这些数组其他轴的长度必须是一样的。

x=np.array([[0,1,2],[10,11,12]])
y=np.array([[50,51,51],[60,61,62]])
print(x.shape,y.shape)
2、vstack 沿着第一维连接
np.vstack((x,y))
3、hstack 沿着第二维连接
np.hstack((x,y))
4、dstack 沿着第三维连接
np.dstack((x,y))

8、numpy内置函数

1)np.abs(ndarray)

绝对值

2)np.exp(ndarray)

指数

3)np.median(ndarray)

中值

4)np.cumsum(ndarray)

累计和

5)mp.cumprod()

累计积

6)np.argmin()

返回最小值元素的小标

7)np.argmax()

返回最大值元素的下标

8)np.sort()

按照不同轴,进行元素排序

9)np.unique()

计算数组元素唯一值

10)np.intersect1d()

计算两个数组的交集

11)np.union1d()

计算两级数组的并集

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XiTUmRkF-1640918831802)(/483f0c09911c491193dc75533967b5a6.png)]

12)np.percentile(参数)

np.percentile(a, q, axis=None, out=None, overwrite_input=False, interpolation=‘linear’, keepdims=False)

计算分位数

百分位数是统计中使用的度量,表示小于这个值的观察值的百分比。 函数numpy.percentile()接受以下参数。

参数说明
a输入数组
q要计算的百分位数,在 0 ~ 100 之间
axis沿着它计算百分位数的轴
keepdimsbool是否保持维度不变
首先明确百分位数:第 p 个百分位数是这样一个值,它使得至少有 p% 的数据项小于或等于这个值,且至少有 (100-p)% 的数据项大于或等于这个值。
percentile百分位
#计算 的最小值、第 25 个百分位数、中位数、第 75 个和最大值ser。
state = np.random.RandomState(100)
ser = pd.Series(state.normal(10, 5, 25))

# Solution
np.percentile(ser, q=[0, 25, 50, 75, 100])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值