zoukankan
html css js c++ java
量化投资与Python之NumPy
数组计算
NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。
NumPy的主要功能:
ndarray,一个多维数组结构,高效且节省空间
无需循环对整组数据进行快速运算的数学函数
*读写磁盘数据的工具以及用于操作内存映射文件的工具
*线性代数、随机数生成和傅里叶变换功能
*用于集成C、C++等代码的工具
安装方法:pip install numpy
引用方式:import numpy as np
ndarray-多维数组对象
为什么要使用ndarray:
例1:已知若干家跨国公司的市值(美元),将其换算为人民币
例2:已知购物车中每件商品的价格与商品件数,求总金额
创建ndarray:np.array()
ndarray是多维数组结构,与列表的区别是:
数组对象内的元素类型必须相同
数组大小不可修改
常用属性:
T 数组的转置(对高维数组而言)
dtype 数组元素的数据类型
size 数组元素的个数
ndim 数组的维数
shape 数组的维度大小(以元组形式)
ndarray-数据类型
ndarray数据类型:dtype:
布尔型:bool_
整型:int_ int8 int16 int32 int64
无符号整型:uint8 uint16 uint32 uint64
浮点型:float_ float16 float32 float64
复数型:complex_ complex64 complex128
ndarray-创建
创建ndarray:
array() 将列表转换为数组,可选择显式指定dtype
arange() range的numpy版,支持浮点数
linspace() 类似arange(),第三个参数为数组长度
zeros() 根据指定形状和dtype创建全0数组
ones() 根据指定形状和dtype创建全1数组
empty() 根据指定形状和dtype创建空数组(随机值)
eye() 根据指定边长和dtype创建单位矩阵
索引和切片
数组和标量之间的运算
a+1 a*3 1//a a**0.5
同样大小数组之间的运算
a+b a/b a**b
数组的索引:
一维数组:a[5]
多维数组:
列表式写法:a[2][3]
新式写法:a[2,3] (推荐)
数组的切片:
一维数组:a[5:8] a[4:] a[2:10] = 1
多维数组:a[1:2, 3:4] a[:,3:5] a[:,1]
与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。 【解决方法:copy()】
布尔型索引
问题:给一个数组,选出数组中所有大于5的数。
答案:a[a>5]
原理:
a>5会对a中的每一个元素进行判断,返回一个布尔数组
布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组
问题2:给一个数组,选出数组中所有大于5的偶数。
问题3:给一个数组,选出数组中所有大于5的数和偶数。
答案:
a[(a>5) & (a%2==0)]
a[(a>5) | (a%2==0)]
花式索引*
问题1:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。
答案:a[[1,3,4,6,7]]
问题2:对一个二维数组,选出其第一列和第三列,组成新的二维数组。
答案:a[:,[1,3]]
通用函数
通用函数:能同时对数组中所有元素进行运算的函数
常见通用函数:
一元函数:abs, sqrt, exp, log, ceil, floor, rint, trunc, modf, isnan, isinf, cos, sin, tan
二元函数:add, substract, multiply, divide, power, mod, maximum, mininum,
浮点数特殊值
浮点数:float
浮点数有两个特殊值:
nan(Not a Number):不等于任何浮点数(nan != nan)
inf(infinity):比任何浮点数都大
NumPy中创建特殊值:np.nan np.inf
在数据分析中,nan常被用作表示数据缺失值
数学和统计方法
常用函数:
sum 求和
cumsum 求前缀和
mean 求平均数
std 求标准差
var 求方差
min 求最小值
max 求最大值
argmin 求最小值索引
argmax 求最大值索引
随机数生成
随机数生成函数在np.random子包内
常用函数
rand 给定形状产生随机数组(0到1之间的数)
randint 给定形状产生随机整数
choice 给定形状产生随机选择
shuffle 与random.shuffle相同
uniform 给定形状产生随机数组
查看全文
相关阅读:
利用CWinThread实现跨线程父子MFC窗口
GetForgroundWindow函数的不确定性——BUG笔记
DLL动态链接库的创建
php正则讲解 及与 js的正则比较
cookie和session的讲解
两种排序的方法 冒泡法 插入法 封装版
php中获取当前时间
文件下载及header方法介绍
文件上传
二分法封装版
原文地址:https://www.cnblogs.com/yifugui/p/8385305.html
最新文章
PL/SQL添加Oracle对象
用网易云短信实现短信验证码功能
[剑指Offer]29-顺时针打印矩阵 / [LeetCode]54. 螺旋矩阵
[ArcGIS]ArcGIS Server环境搭建,发布服务,以及使用ArcGIS API for JavaScript
[剑指Offer]10-斐波那契数列(循环)-Java
[剑指Offer]60-n个骰子的点数
[剑指Offer]5-替换空格
[C++]字符串相关操作
[Java核心技术]第四章-对象与类(4.1-4.6)
[剑指Offer]8-二叉树的下一个节点
热门文章
[剑指Offer]7-重建二叉树
[剑指Offer]38-字符串的全排列
Hibernate的配置文件解析
table、tr、td表格的行、单元格等属性说明
DLL动态库多次加载问题
【vc】高精度时间函数的使用
COM(Component Object Model)接口定义
关于MessageBox返回值
MFC实现类似spy++dm取句柄功能
MFC限制窗口大小
Copyright © 2011-2022 走看看