array本身支持的大量操作和函数
使用arange创建数字序列
和python中的range一样:
使用ones创建全是1的数组
使用ones_like创建形状相同的数组
zeros和zeros_like同理
empty和empty_like类似,填的全是随机数而非0
fill和fill_like也是,填的是自己想要的值
使用random模块生成随机数的数组
这些操作如果用python实现需要写很多for循环,用numpy数组很容易
最大的特点:array对象,以数组为单位进行运算,不需要for循环!!
索引和python的List一样
不太一样嗷,List中是跟C语言的数组一样的,例如x[i][j]
然鹅,array中是x[i,j]
中间是用逗号隔开的!!
argsort
传回来的是下标,然后根据神奇索引访问
感觉就是根据index代入啊!!!索引到value然后代入index的输入形式!!
数组之间有逗号,逗号之前是一个数组,代表要取的行号,逗号后面是也一个数组,代表要取得列号!!!
原则仍然是根据索引代换进去!!!
bool类型就是true或者false哇,就是一种阈值的方法
意思是,输出【第三列】元素值【大于5】的那些行
bool的二维数组只有True和False的时候,再以它作为参数,取到的索引是一维的!!!
最外层逗号把参数分成前后两块,前面一部分是【给你选的东西】(如果【给你选的东西】是一个数字n,则表示range(n),如果是一个List,则表示在这个里面挑选),后面一部分是size,确定了维度!!
遇到多维数组,只会对第一维度进行打乱!!!
即进行行打乱,但是后面还是跟着第一位(老大)的!!!同一行一直是同一行,只是行与行之间打乱
把一个数组x进行随机排列,或者数字的全排列
这与shuffle类似,一个数的时候表示range(n),多个数则表示多维度
但是!!!!shuffle是浅拷贝,即改变了原数组;而permutation是深拷贝,返回的是一个新的数组,不改变原来数组的值!!!!!!
按照平均值loc和方差scale生成高斯分布的数字
效果如下
np.cumsum(arr):
某个位置的值是这样得出来的,计算从arr[0]开始一直到这个位置的所有元素和(cumprod同理),用处是,累计一个东西,比如一个水电费啥的
np.percentile(百分数划分),quantile(小数划分):
就是把整个数组按值整成在一个数轴上,然后取位于百分之多少上的数(如果不是整数,就取两侧数据的平均)
举个例子:高等院校的入学考试成绩经常以百分位数的形式报告。比如,假设某个考生在入学考试中的语文部分的原始分数为 54 分。相对于参加同一考试的其他学生来说,他的成绩如何并不容易知道。但是如果原始分数54分恰好对应的是第70百分位数,我们就能知道大约70%的学生的考分比他低,而约30%的学生考分比他高。
中位数、平均数 、标准差、方差、加权平均
对于加权平均,因为arr.shape
是元组类型,例如(1,2,3)
如果要用np.random.rand()
,则必须要传入“1,2,3”而非"(1,2,3)",因此要用"*"号,把元组打散成元素!!!!
如果要用np.random.random()
,则可以传入"(1,2,3)",变成np.random.random((1,2,3))
,就不需要用“*”打散元组了!!!
举个例子:
当axis=0时,就是把整个数组上下压扁,压成一行
当axis=1时,就是把整个数组左右压扁,压成一列,然后再横着排成一行
如图,arr为3×4的矩阵,但是mean是每一列平均值组成的,是1×4的矩阵,这时候他会自动把后者复制成三份,变成3×4的矩阵,再和arr进行运算。这就是numpy的广播。
例子:
效果如下:
标准化的公式要牢记嗷!!!
标准化的公式要牢记嗷!!!
标准化的公式要牢记嗷!!!
需求:有一个非常大的数组比如1亿个数字,求出里面数字小于5000的数字数目
这里用到了Numpy的布尔索引
对比体会一下python原生语法的遍历和numpy的bool索引!!!
对比体会一下python原生语法的遍历和numpy的bool索引!!!
对比体会一下python原生语法的遍历和numpy的bool索引!!!
就是逗号左边是行,右边是列,然后np.newaxis
在左边的时候意思就是:添加了空的行
如果np.newaxis
在逗号右边,意思就是:添加了空的列!!!
其效果和上面np.newanxis
关键字一摸一样(不过感觉这个好理解啊)
axis=0
则是添加空行,这个之前用mean、sum、average等进行每一列的计算时的想法相同,都是液压机压缩的方法,axis=1
则是左右压缩!!!
因为我们很多时候,其实数据太多,不知道到底有多少数据
这个时候就用“-1”来让Numpy自己算到底有多少数据即可!!!