前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Numpy模块的基础操作-学习笔记

Numpy模块的基础操作-学习笔记

作者头像
快学Python
发布2021-08-09 11:12:34
6010
发布2021-08-09 11:12:34
举报
文章被收录于专栏:快学Python

作者:孙湛林

来源:快学Python

基于python的金融分析与风险管理,关于numpy的基础操作梳理~

一、N维数组

数组是numpy中最常见的数据结构,np.array() 。字符串和数字不能同时存在于同一个数组中。

1. 数组的结构

代码语言:javascript
复制
weight = np.array([0.15, 0.2, 0.25, 0.4])   #直接输入数组
# 将列表转化为数组
weight_list = [0.15, -.2, 0.25, 0.4]
weight_array = np.array(weight_list)
- reshape 和 ravel 转换数组维度
代码语言:javascript
复制
# 列表转化为一维数组,reshape成4*5的数组
return_list = [0.003731, 0.021066, -0.004854, 0.006098, -0.00606, -0.001838, 0.001842, -0.016544, -0.003738, 0.003752, -0.003087, -0.000344, -0.033391, 0.007123, 0.004597, -0.024112, 0.011704, -0.029563, -0.01457, 0.016129]
return_array = np.array(return_list)
return_array = return_array.reshape(4,5)   #4行  5列
# 用ravel回到一维数组
return_array.ravel()
- 查看数组的属性
代码语言:javascript
复制
return_array.ndim   #查看数组维度
return_array.size   #查看数组的元素数量
return_array.dtype   #查看数组的元素类型

2. 数组的便捷生成

- 生成整数数组
代码语言:javascript
复制
a = np.arange(0,10)
b = np.arange(0,100,3)   #0开始到100,每隔3取一个数
- 生成等差数组

第一个参数是起始值,第二个参数是终止值(默认包含在内),第三个参数是数组中元素个数。注意和arange区别。

代码语言:javascript
复制
np.linspace(0,100,51)
- 创建元素0 的数组(元素1 同理)
代码语言:javascript
复制
np.zeros(4)  #一维 4个0
np.zeros((4,5))  # 4行 5列的0
zero_weight = np.zeros_like(weight_array)  #生成一个和目标一样维度,但数据都是0 的array
----------------------------
np.ones(5)
np.ones((5,6))
np.ones_like(return_array)
- 创建单位矩阵

对角线=1,其他位置=0

代码语言:javascript
复制
np.eye(5)  #数组就是二维的

二、数组的索引、切片、排序

1. 索引

代码语言:javascript
复制
return_array[1,2]  #找1行 2列的数据
np.where(return_array<-0.01)  #按照一定规则找值

说明:where返回的元祖,第一个元素是满足条件元素的行,第二个元素是满足条件元素的列。即< - 0.01的元素是,1行2列,2行2列,3行0列,3行2列,3行3列。

2. 切片

代码语言:javascript
复制
return_array[2:, 1:4]  #第三行以后的数据,第二列到第三列。左闭右开
return_array[1]   # 第二行
return_array[:,2]  # 第三列

3. 排序

代码语言:javascript
复制
np.sort(return_array)  # 默认axis=1.一行从左到右,从小到大
np.sort(return_array, axis=0)  #从上往下,从小到大

说明:排序的时候,行和行之间就不再有对应关系了。

三、数组的相关运算

1. 数组内的运算

- 求和
代码语言:javascript
复制
return_array.sum(axis=1)  #按行求和,返回的也是数组
return_array.sum(axis=0)  #按列求和
return_array.sum()    #全部元素的和
- 求乘积,axis原理一致
代码语言:javascript
复制
return_array.prod(axis=1)  #求行乘积
- 求最值,axis原理一致
代码语言:javascript
复制
return_array.min()  # 全部数据的最小值
return_array.max(axis=0)  # 按列求最大值
- 求均值,axis原理一致
代码语言:javascript
复制
return_array.mean()  # 求全部元素平均值
- 求方差标准差,axis原理一致
代码语言:javascript
复制
return_array.var()  # 求方差
return_array.std()  # 求标准差
- 幂运算
代码语言:javascript
复制
np.sqrt(return_array)  #每个元素的开方
np.square(return_array)  #每个元素的平方
np.exp(return_array)   #每个位置 = e的 该位置元素 的次方
- 对数运算
代码语言:javascript
复制
np.log(return_array)  #每个元素计算自然对数
np.log10(return_array)  #每个元素以10为底的对数
np.log2(return_array)   #以2为底

2. 数组间的运算

数组间的运算包括加减乘除 幂次方,运算适用于有相同行数、列数的数组。

代码语言:javascript
复制
return_array + one_return
# 一个数字与数组的运算
return_array + 10   #数组每个元素 + 10
return_array ** 2   #数组每个元素 平方
- 比较后保留最大、最小值

两个或多个相同形状的数组之间,对应位置元素大小关系比较后,保留大 / 小的元素,形成新数组

代码语言:javascript
复制
np.maximum(zero_return, return_array)   #保留大的元素
return_min = np.minimum(return_array, zero_return)

3. 矩阵的操作

- 矩阵的性质
代码语言:javascript
复制
corrcof_return = np.corrcoef(return_array)   #求得相关系数矩阵

其他的形式:np.diag()对角线;np.triu 矩阵上三角;np.tril 矩阵下三角;np.trace 矩阵的迹;T 转置。

- 矩阵的运算

内积、矩阵的行列式、逆矩阵、特征值分解、奇异值分解【P74】

代码语言:javascript
复制
np.dot(weight_array, return_array)   #内积

说明:dot函数的原理是,左侧第一行 * 右侧第一列;左侧第一行 * 右侧第二列;所得的结果相加形成一个值 以此类推,将全部元素一次乘完。数组的行列要能一一对应才行。

子模块linalg的主要函数

四、numpy生成随机数

1. 主要的统计分布

二项分布、几何分布、超几何分布、泊松分布、均匀分布、正态分布、对数正态分布、卡方分布、学生 t 分布、F 分布、贝塔分布、伽玛分布和指数分布

2.部分统计分布示例

代码语言:javascript
复制
import numpy.random as npr
# 从均值=1,标准差=2的正态分布中取随机数,取10000次。
# 把数形成一维array,赋值给x_norm
x_norm = npr.normal(loc=1, scale=2, size=10000)
# 标准正态分布取数,有三种方法
x_snorm1 = npr.randn(10000)
x_snorm2 = npr.standard_normal(size=10000)
x_snorm3 = npr.normal(loc=0, scale=1, size=10000)
# 对数服从均值=0.5,标准差=1的正态分布,取数10000次
x_logn= npr.lognormal(mean=0.5, sigma=1.0, size=10000)
# 从自由度=4的卡方分布中取数
x_chi1 = npr.chisquare(df=4, size=10000)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 快学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、N维数组
    • 1. 数组的结构
      • - reshape 和 ravel 转换数组维度
      • - 查看数组的属性
    • 2. 数组的便捷生成
      • - 生成整数数组
      • - 生成等差数组
      • - 创建元素0 的数组(元素1 同理)
      • - 创建单位矩阵
  • 二、数组的索引、切片、排序
    • 1. 索引
      • 2. 切片
        • 3. 排序
        • 三、数组的相关运算
          • 1. 数组内的运算
            • - 求和
            • - 求乘积,axis原理一致
            • - 求最值,axis原理一致
            • - 求均值,axis原理一致
            • - 求方差标准差,axis原理一致
            • - 幂运算
            • - 对数运算
          • 2. 数组间的运算
            • - 比较后保留最大、最小值
          • 3. 矩阵的操作
            • - 矩阵的性质
            • - 矩阵的运算
        • 四、numpy生成随机数
          • 1. 主要的统计分布
            • 2.部分统计分布示例
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档