type
status
date
slug
summary
tags
category
icon
password

什么是ndarray对象

ndarray的全称是N-Dimension Arrary,字面意义上其实已经表明了一个ndarray对象就是一个N维数组。但要注意的是,ndarray同质的。同质的意思就是说 N维数组里的所有元素必须是属于同一种数据类型的(PS: python中的list是异质的)
ndarray对象实例化好了之后,包含了一些基本的属性。比如shapendimsizedtype。其中:
  • shape:ndarray对象的形状,由一个tuple表示;
  • ndim:ndarray对象的维度;
  • size:ndarray对象中元素的数量;
  • dtype:ndarray对象中元素的数据类型,例如int64float32等。
来看个例子,假设现在有一个35列的矩阵(ndarray)如下:
那么该ndarrayshape(3, 5)(代表35列);
ndim2(因为矩阵有行和列两个维度);
size15(因为矩阵总共有15个元素);
dtypeint32(因为矩阵中元素都是整数,并且用32位整型足够表示矩阵中的元素)。
示例代码如下:

1 实例化ndarray对象

最为常用的函数是arrayzerosones以及empty

2 改变ndarray对象的形状

1 NumPy为我们提供了一个用来改变ndarray对象的shape的函数,叫 reshape
PS:不管是哪种方式的reshape,都不会改变原ndarray的形状,而是将源ndarray进行深拷贝并进行变形操作,最后再将变形后的数组返回出去。也就是说如果代码是np.reshape(a, (4, 3))那么a的形状不会被修改!
2 直接改变源ndarray的形状,可以使用resize函数
技巧:有的时候懒得去算每个维度上的长度是多少,比如现在有一个68列的ndarray,然后想把它变形成有2列的ndarray(行的数量我懒得去想),此时我们可以在行的维度上传个-1即可

3 运算

算术运算

矩阵运算(逐个计算和矩阵乘法)

逐个计算
真正的矩阵乘法运算

4统计

1 简单统计(和,最大最小)

2 根据轴来统计

notion image
PS:当没有修改axis时,axis的值默认为None。意思是在统计时会把ndarray对象中所有的元素都考虑在内。

5 随机数生成

1 简单随机数

2 概率分布随机数

高斯/正态分布:
notion image
横轴为随机变量的值(在这里可以看成是产生的随机值),纵轴表示随机变量对应的概率(在这里可以看成是随机值被挑选到的概率
其中normal函数除了size参数外,还有两个比较重要的参数就是locscale,它们分别代表高斯分布的均值方差loc影响的分布中概率最高的点的位置,假设loc=2,那么分布中概率最高的点的位置就是2。下图体现了loc对分布的影响,其中蓝色f分布的loc=0,红色分布的loc=5
notion image

3 随机种子

随机数其实就是根据种子算出来的数

6 索引与切片

索引:略
遍历:
切片:
切片的语法,第一个数字是起始位置(默认为0),第二个数字是结束位置(默认为数组的最大索引值),第三个是抽取元素的间隔(默认为1,取-1为倒序)
 
头歌课程总结—NumPy高级概率分布函数概率密度函数分布函数函数分布balabala