1. 安装anaconda环境
该环境已经集成pandas、numpy、等众多数学库
环境安装:https://www.jianshu.com/p/d3a5ec1d9a08
使用jupyter notebook进行练习与实践,该命令可以激活浏览器,能够提供一个良好的用户交互p平台。
2.NumPy: 数组和⽮量计算
2.1 介绍
NumPy是在⼀个连续的内存块中存储数据,独⽴于其他Python内置对象。NumPy的C语⾔编
写的算法库可以操作内存,⽽不必进⾏类型检查或其它前期⼯作。⽐起Python的内置序列,
NumPy数组使⽤的内存更少。
特色
:NumPy可以在整个数组上执⾏复杂的计算,⽽不需要Python的for循环。
比较
:基于NumPy的算法要⽐纯Python快10到100倍(甚⾄更快),并且使⽤的内存更少。
2.2 ndarray生成方式
使用原列表生成
例如:a = [[1,2,3],[2,3,4]] b = np.array(a)
使用随机生成
例如:data = np.random.randn(2, 3)
生成位置数组,所有元素为0
np.zeros(10) np.zeros(3,3)
生成单位数组,所有元素为1
np.ones(10) np.ones(3,3)
生成随机元素的数组
np.empty((2, 3, 2))
生成等差数组
np.arange([start, ]stop, [step, ]dtype=None)
np.arange(1,5,2)->[1 3]
2.3 numpy数组的常用属性
data = np.array([[1,2,3],[2,3,4]])
ndim
使用:data.ndim = 2 获取ndarray的维度,也是获取数组的嵌套层数
shape
使用:data.shape = (2,3) 获取数组的形状
dtype
使用:data.dtype = int64 获取数组中所由元素共通的类型
reshape
使用 data.reshape(3,2),将满足该元素个数的数组进行重新调整形状
astype:转换数组的数据类型
说明:int32 --> float64 完全ojbk
float64 --> int32 会将小数部分截断
string_ --> float64 如果字符串数组表示的全是数字,也可以用astype转化为数值类型
使用: float_arr = data.astype(np.float64)
特征:调⽤astype总会创建⼀个新的数组(⼀个数据的备份)
2.4 NumPy数组的运算
不⽤编写循环即可对数据执⾏批量运算。NumPy⽤户称其为⽮量化(vectorization)。⼤⼩相 等
的数组之间的任何算术运算都会将运算应⽤到元素级
arr = np.array([[1., 2., 3.], [4., 5., 6.]])
特点1:适用于元素个数一样 形状一样 进行
加减乘除
。
特点2:数组与标量的算术运算会将标量值传播到各个元素。
例如:arr * 0.5 = array([[0.5, 1. , 1.5],[2. , 2.5, 3. ]])
特点3:⼤⼩、结构相同的数组之间的⽐较会⽣成布尔值数组。
例如:arr>arr1 = array([[False, False, False],[False, False, True]])
2.5 基本的索引和切⽚
arr = np.arange(10)
arr[5] = 5
arr[5:8] = array([5, 6, 7])
arr[5:8] =(赋值) 12 -> array([ 0, 1, 2, 3, 4, 12, 12, 12, 8, 9])
arr_slice =(赋值) arr[5:8] -> arr_slice[1] =(赋值) 12345->array([ 0, 1, 2, 3, 4, 12, 12345, 12, 8,
9])
切⽚[ : ]会给数组中的所有值赋值
arr_slice[:] =(赋值) 64->array([ 0, 1, 2, 3, 4, 64, 64, 64, 8, 9])
多维数组切片
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])arr2d[2] = array([7, 8, 9])
arr2d[0][2] = 3 arr2d[0, 2] = 3
多维数组中,如果省略了后⾯的索引,则返回对象会是⼀个维度低⼀点的ndarray
arr3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
标量值和数组都可以被赋值给arr3d[0]
old_values = arr3d[0].copy()
old_values == array([[1, 2, 3], [4, 5, 6]])
arr3d[0] = 42 # 所有值变为42
arr3d[0] = old_values
arr3d == array([[[ 1, 2, 3],[ 4, 5, 6]],[[ 7, 8, 9],[10, 11, 12]]])
切⽚索引
image.png
布尔索引 :假设我们有⼀个⽤于存储数据的数组以及⼀个存储姓名的数组(含有重复项)
image.png
image.png
花式索引:花式索引(Fancy indexing)是⼀个NumPy术语,它指的是利⽤整数数组进⾏索引
image.png
image.png
网友评论