其他
学习Numpy,看这篇文章就够啦
导读:在数据分析当中,Python用到最多的第三方库就是Numpy。本文内容是「大数据DT」内容合伙人王皓阅读学习《Python 3智能数据分析快速入门》过后的思考和补充,结合这本书一起学习,效果更佳。
数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据 设置专门的数组对象,经过优化,可以提升这类应用的运算速度,在科学计算中,一个维度所有数据的类型往往相同 数组对象采用相同的数据类型,有助于节省运算和存储空间
使用array函数创建数ndarray 使用arange函数创建数ndarray
从Python中的列表、元组等类型创建ndarray数组 使用NumPy中函数创建ndarray数组,如:arange, ones, zeros等 从字节流(raw bytes)中创建ndarray数组 从文件中读取特定格式,创建ndarray数组
np.full(shape,val):根据shape生成一个数组,每个元素值都是val np.ones_like(a):根据数组a的形状生成一个全1数组 np.zeros_like(a):根据数组a的形状生成一个全0数组 np.full_like(a,val):根据数组a的形状生成一个数组,每个元素值都是val np.concatenate():将两个或多个数组合并成一个新的数组
choice(a[,size,replace,p]):从一维数组a中以概率p抽取元素,形成size形状新数组 replace表示是否可以重用元素,默认为False poisson(lam,size):产生具有泊松分布的数组,lam随机事件发生率,size形状
import numpy as np
print(np.arange(10))
arrnp.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])
print('\n',arr)
输出:
[[ 1 2 3 4 5]
[ 4 5 6 7 8]
[ 7 8 9 10 11]]
#访问第0行中第3列和第4列元素
print('切片结果:',arr[0,3:5])
输出:
切片结果:[4 5]
#访问第1行和第二行中第2列、第3列和第4列的元素
print('切片结果:\n',arr[1:,2:])
[6 7 8]
[9 10 11]
#访问第2列的元素
print('切片结果:',arr[:2])
# 索引第1、3行中第2列的元素。Define true 1, define false 0
mask=np.array([1, 0, 1], dtype=np.bool)
print(arr[mask, 1])
[2 8]
arr = np.empty((4,7),int)
print(arr)
arr = np.array([np.arange(i*4, i*4+4) for i in np.arange(6)])
print('创建的二维ndarray arr为:\n', arr)
#利用np.ix函数将两个一维的整数ndarray转化为方形区域的索引器
print('使用ix成片索引arr结果为:\n', arr[np.ix_([5, 1, 4, 2], [3, 0, 1, 2])])
设置ndarray形状
通过reshape方法改变ndarray形状 通过resize方法改变ndarray形状 通过修改shape属性改变ndarray维度 使用ravel方法展平ndarray 使用flatten方法展平ndarray 使用hstack函数实现ndarray横向组合 使用vstack函数实现ndarray纵向组合 使用concatenate函数组合ndarray 使用dstack函数组合ndarray 使用hsplit函数实现ndarray横向分割 使用vsplit函数实现ndarray纵向分割 使用split函数分割ndarray 使用dsplit函数实现ndarray深度分割
.swapaxes(ax1,ax2):将数组n个维度中两个维度进行调换 .astype(new_type):一定会创建新的数组(原始数据的一个拷贝),即使两个类型一致 .tolist( ):将数组或者矩阵转换成列表
import numpy as np
arr=np.arange(12)
arr.shape = (4, 3)
print('\n', arr)
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
print('形状改变后, ndarray arr的维度为:',arr.ndim)
形状改变后,ndarray arr的维度为:2
'''
dsplit分割的ndarray必须是三维ndarray,
且分割的数目必须为shape属性中下标为2的值的公约数。
比如这里的分割数就是36,下标为2的值是4,符合要求
'''
arr = np.arange(36).reshape(3,3,4)
print('创建的三维ndarrary arr为:\n',arr)
创建的三维 ndarrary arr为:
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[ 12 13 14 15]
[ 16 17 18 19]
[ 20 21 22 23]]
[[ 24 25 26 27]
[ 28 29 30 31]
[ 32 33 34 35]]]
使用sort函数进行排序 使用argsort函数进行排序 使用argmax和argmin函数进行搜索 使用where函数无x与y 使用where函数有x与y 使用extract函数进行搜索
ufunc的广播机制
常用ufunc
frame:文件、字符串 sep:数据分割字符串,如果是空串,写入文件为二进制 format:写入数据的格式
frame:文件、字符串 dtype:读取的数据类型 count:读入元素个数,‐1表示读入整个文件 sep:数据分割字符串,如果是空串,写入文件为二进制
ndarray基础知识,包括ndarray的属性与创建方法。 ndarray使用的切片和索引方法,改变ndarray形状的方式,ndarray的排序、搜索与字符串操作等。 ufunc的广播功能及常用的ufunc,包括算术运算函数、三角函数、集合运算函数、比较运算函数、逻辑运算函数和统计计算函数等。 矩阵的创建、属性及基本运算。 Numpy中二进制的文件读写和文件列表形式的数据读写。
关于作者:王皓,一名就读于北京石油化工学院大数据管理与应用专业的同学,热爱并致力于学习Python语言及相关应用领域。大数据DT内容合伙人。
延伸阅读《Python3智能数据分析快速入门》
点击上图了解及购买
转载请联系微信:DoctorData
大数据DT「内容合伙人」上线啦!
最近,你都在读什么书?有哪些心得体会想要跟大家分享?
数据叔最近搞了个大事——联合优质图书出版商机械工业出版社华章公司发起鉴书活动。
简单说就是:你可以免费读新书,你可以免费读新书的同时,顺手码一篇读书笔记就行。详情请在大数据DT公众号后台对话框回复合伙人查看。
更多精彩👇