学习python要有面向数组/多维数组的编程思维
numpy好的地方就在于可以进行数组层面的操作,不用循环去处理数组中的每一个元素,这叫做矢量化,以上用的函数基本都要在前面加上np.
ndarray里面是同一种类型的数据
切片的赋值会影响到源数据
如果只是复制一份切片,需要用到copy()
type(arr)是看arr的整个类型
arr.dtype是看arr中元素的数据类型
如何改变数据类型用astype
但是是产生一个新的数组,原数组类型不变
将元组列表等序列数组转换为ndarray用asarray
但是是创建了一个新的数组,原arr没有变
两种取值方式是等价的
以整数数组来取出对应数组
若传入多个整数数组,返回的是索引元组,注意是元组
本应该是一个3x3的矩阵才对,要想取得矩阵需要这样
还可以用np.ix_函数
用.T取得数组的转置
还可以通过transpose函数来转换轴来实现数组的转置
其中参数是变换后轴位置的元组,(1,0)表示,把原来的0轴和1轴对换
swapaxes函数是用来交换轴的,只能传入两个参数,意味着这个函数只能交换两个2轴
通用函数(ufunc):快速元素级数组函数
从字面上理解就是进行元素级别的函数,如sqrt、exp、maximum等
可以用来划分整数和小数的函数modf,返回的是两个数组
《利用python进行数据分析》上有关于ufunc的一元二元的函数表
函数meshgrid接收两个一维数组,返回二维数组
其中np.arange(-5,5,0.01)指的是在[-5,5)之间每0.01为一个间隔创建一个数组
通过条件来创建数组
其中zip函数为打包函数,将xarr,cond,yarr相对应的元组
上面的方法是比较麻烦的,我们可以用where函数
arr中大于0设置为2,否则为-2
只处理正数
sum,mean等函数可以有一个轴参数,axis=0表示统计相同列不同行的值,axis=1表示统计相同行不同列的值。
看最后的数组元素个数就可知
cumsum表示所有元素累计和
cumprod表示所有元素累计积
any(是否存在)、all(是否全部)用来判断bool数组的True情况
将数组中的元素进行排序用sort函数,参数是轴axis
求取数组中的唯一值用unique函数,并且返回一个排序的数组
判断一个数组存在的数是否在另一个数组中存在用in1d函数
四、用于数组的文件输入输出
np.save(‘文件名’,数组)从内存中保存数组到硬盘和np.load(文件名.npy)从硬盘加载数组到内存中
np.savez(文件名.npz,数组,数组)可以保存多个数组,加载还是用load,取值时可以用关键字’a’,'b’等
存取文本文件:
有np.loadtxt和np.genfromtxt将数据加载到普通的Numpy数组中,loadtxt和genfromtxt差不多,只不过它面向的时结构化数组和丢失数据处理
有np.savetxt将数组以某种分隔符写到文本文件中
五、线性代数
dot可以实现矩阵的点积
x.dot(y)和np.dot(x,y)是等价的
矩阵中的求逆运算、矩阵分解都运算在linalg模块中
六、随机数生成
七、pandas数据结构介绍
索引index是不可改的
Series重新设置索引用reindex
用参数fill_value填充没有赋值的索引
重新索引时,可以用method参数来设置填充方法
可以用ix标签来代替index,可以更加简洁
注意,ix标签用的[],不是用()
删除指定轴上的项用drop函数
删除的时候要设置轴,但是这里默认是0轴,即行,所以不用设置,要删除列的项要将轴设置为1,axis=1
索引的切片运算与python不同,是包含末端的
DataFrame的选取可以通过切片也可以通过布尔型数组运算
选取某些具体的行和列共同作用的子集可以用ix标签
经常会用到:
pandas可以对不同索引的对象进行算术运算,并且最终结果是两个对象的索引的并集。
DataFrame亦是如此
numpy中的ufun也可以用于pandas中
可以通过使用apply函数将一个方法运算在单行或者单列的一位数组上
对索引进行排序可以使用sort_index(),可设置轴或者升序还是降序,也可以通过某一列排序,添加一个参数by=‘列名’
rank()是 平均排名,rank(method=‘first’)是按第一次出现排名
索引是可以重复的
来源:CSDN
作者:保持动力
链接:https://blog.csdn.net/qq_36342034/article/details/104228317