NumPy的ndarray:一种多维数组对象
创建ndarray
data.shape | 表示各维度大小的元组 |
data.dtype | 表示数组数据类型 |
data.ndim | 返回维数 |
![[利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算 [利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzEyOS9iNjQ5OGEwYjVkZDEwN2RhM2U3M2M5NmNkZDMyYzg1MS5KUEVH)
ndarray的数据类型
![[利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算 [利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzQ2MS84ZWZlMGU5YjI5Yzc5Njc1ZTllNGE1ODUwMTJmNDUzNS5KUEVH)
![[利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算 [利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzk3L2Y1ZjBkY2Y3ZTgyMTVjMzQ2NzA4OTNjNmNlMDA0MTU5LkpQRUc=)
astype | 显式地转换其dtype,会创建一个新的数组(一份拷贝) |
数组和表量之间的运算
两数组之间直接使用+、-、*、/
基本的索引和切片
arr[5:8] | 数组切片是原始数组的视图(数据不会被复制),视图上的任何修改都会直接反映到原数组上 |
如arr[5:8]返回index为5-7的值,不包括8 |
arr[5:8].copy() | 如果想要得到ndarray的副本而不是视图,需要显式地进行复制 |
![[利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算 [利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzg2MC9hYzg0ZWY2MzZjZTRlMjIyOGY4ZjQzYjE1NmVhMWQ5NC5KUEVH)
布尔型索引
布尔型数组跟切片、整数可混合使用。如data[names=='bob', 2:]
也可以使用多个布尔条件,如& | !。但and和or在布尔型数组中无效
花式索引
arr([1,5],[3,5]) | 选出的是元素(1,3)和(5,5) |
arr[[1,5]] [:, [0,3,1,2]] | 选出1和5行的全部元素,列按0/3/1/2顺序排列 |
np.ix_ | 将两个一维整数数组转换为一个用于选取方形区域的索引器 |
arr[np.ix_([1,5],[0,3,1,2])]返回结果与上一个一样 |
数组转置和轴对换
转置 | arr.T或arr.transpose()(可用于高维度,输入一个由轴编号组成的元组) |
返回的是原数据的视图,不进行复制操作 |
通用函数:快速的元素级数组函数
![[利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算 [利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzIxMy85OThjM2UwZTdlY2VjNjY1M2I3ZWM0YzY2NjU2MGYzZC5KUEVH)
![[利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算 [利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzIwOS8xZDIyNzg5ZmExMzM1YjdhZTY3NmVkMjlhNWY0NTZmMS5KUEVH)
利用数组进行数据处理
将条件逻辑表述为数组运算
np.where(x,y,z) | x为条件,x为true则返回y,否则为z |
数学和统计方法
![[利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算 [利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM3Ni9mNDdhNThiYWY3ODNjMzNjN2QzOTYyZDU1NDFlY2FlMC5KUEVH)
用于布尔型数组的方法
(arr > 0).sum() | 布尔值会被强制转换为1/0,sum可用于计算1的值 |
arr.any() | 检查arr数组中是否存在一或多个true |
arr.all() | 检查是否全都是true |
排序
np.sort() | 返回已排序的副本,参数可输入1或0表示行和列 |
唯一化以及其他集合的逻辑
![[利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算 [利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE5OC80MTkyNzNiYTRmMGRjODQ1ZmM4ZTgzOWU5ZDI0NTM1Ni5KUEVH)
用于数组的文件输入输出
将数组以二进制形式保存到磁盘
np.save('文件名',数组) | 存 |
np.load('文件名') | 读取 |
np.savez('文件名',a=arr,b=arr) | 将多个数组保存到一个压缩文件 |
存取文本文件
np.loadtxt('文件名',delimmiter = ',') |
np.savetxt() | 进行相反的操作 |
线性代数
![[利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算 [利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzQvYmI4MTJkYTk2NDlkM2FjODk0ODdmN2RhMmNiNGQ4MjQuSlBFRw==)
随机数生成
![[利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算 [利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE3OC9hYjg2NmM3YzE0YzZiNzc5M2ZjZjA2ZjJiMzAwNTE2YS5KUEVH)
![[利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算 [利用python进行数据分析 书笔记]第4章 NumPy基础:数组和矢量计算](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzg0Ni9lYjBmMzM2OWVmY2FlZWY4OGIzMzE0NGU2NDk1ZjIwZS5KUEVH)