python分析基金数据,[Python数据分析]numpy基金会,基础
数组属性
ndim与shape的区别
ndim 轴的数量,即从外到内的层数(axis=0为最外层)
shape 每层数组的元素,返回一个元组,其长度即为ndim,比如(2,2,3)表示axis=0,有两个元素; axis=1, 有两个元素,最内层axis=3有3个元素,ndim=3
创建数组
1. 一般创建
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
numpy.empty(shape, dtype = float, order = ‘C’)创建
空
数组
numpy.zeros(shape, dtype = float, order = ‘C’) 创建
零
数组
numpy.ones(shape, dtype = None, order = ‘C’) 创建
1
数组
2.
从已有的数组创建数组
numpy.asarray(a, dtype = None, order = None) a为任意形式的输入参数,可以是列表, 列表的元组, 元组等
numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0) buffer以流的形式传入参数
numpy.fromiter(iterable, dtype, count=-1) 从可迭代对象创建
3.
从数值范围创建数组
numpy.arange(start, stop, step, dtype) 创建start—stop范围内数组
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)创建一维等差数组,num为生成 元素数量
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)创建等比数列,base对数 log 的底数
numpy的切片和索引
1. slice() 通过索引进行切片
import numpy as np
a = np.arange(10)
s = slice(2,7,## 标题2) # 从索引 2 开始到索引 7 停止,间隔为2
print (a[s])
[2,4,6]
2. [start:stop:step]
b = a[2:7:2]
冒号 : 的解释:如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。如果为 [2:],表示从该索引开始以后的所有项都将被提取。如果使用了两个参数,如 [2:7],那么则提取两个索引(
不包括停止索引
)之间的项
3. 包括省略号 …,来使选择元组的长度与数组的维度相同,行位置使用省略号,返回包含行中元素的数组
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print (a[...,1]) # 第2列元素
print (a[1,...]) # 第2行元素
print (a[...,1:]) # 第2列及剩下的所有元素
#输出结果
[2 4 5]
[3 4 5]
[[2 3]
[4 5]
[5 6]]
高级索引
整数数组索引
import numpy as np
x = np.array([[1, 2], [3, 4], [5, 6]])
y = x[[0,1,2], [0,1,0]]
print (y)
#输出结果,获取数组(0,0),(1,1),(2,0)位置处元素
[1,4,5]
切片 : 或 … 与索引数组组合
a = np.array([[1,2,3], [4,5,6],[7,8,9]])
c = a[1:3,[1,2]]
#输出结果,1:3切片索引不含尾,[1,2]索引数组包含头和尾
[[5 6]
[8 9]]
布尔索引
通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。x[x > 5]
a[~np.isnan(a)] 过滤a中NaN
a[np.iscomplex(a)] 提出复数
花式索引
花式索引指的是利用整数数组进行索引,跟切片不一样,它总是
将数据复制到新数组中
,如果目标是多维数组,那么就是对应下标的行
x=np.arange(32).reshape((8,4))
print (x[[4,2,1,7]]) #行的索引
x=np.arange(32).reshape((8,4))
print (x[np.ix_([1,5,7,2],[0,3,1,2])])#传入多个索引数组(要使用np.ix_)
NumPy 广播(Broadcast)
运算中a.shape ≠ b.shape时,触发广播机制
广播的规则:
让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加 1 补齐。
输出数组的形状是输入数组形状的各个维度上的最大值。
如果输入数组的某个维度和输出数组的对应维度的长度相同或者其长度为 1 时,这个数组能够用来计算,否则出错。
当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。
import numpy as np
a = np.array([[ 0, 0, 0],
[10,10,10],
[20,20,20],
[30,30,30]])
b = np.array([1,2,3])
bb = np.tile(b, (4, 1)) # 重复 b 的各个维度
print(a + bb)
#结果
[[ 1 2 3]
[11 12 13]
[21 22 23]
[31 32 33]]
tile() 函数,就是将原矩阵横向、纵向地复制。
tile(mat, (1, 4)) # 列复制为原来的四倍
NumPy 迭代数组
numpy.ndite
Numpy 数组操作
修改数组形状
numpy.reshape(arr, newshape, order=‘C’)
numpy.ndarray.flat 数组元素迭代器
ndarray.flatten(order=‘C’) 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组,,order:‘C’ – 按行,‘F’ – 按列,‘A’ – 原顺序,‘K’ – 元素在内存中的出现顺序。
a=[[0 1 2 3]
[4 5 6 7]]
a.flatten()=[0 1 2 3 4 5 6 7]
numpy.ravel(a, order=‘C’) 展平的数组元素,修改会影响原始数组。
翻转数组
numpy.transpose(arr, axes) 对换数组的维度,类似numpy.ndarray.T转置
numpy.rollaxis(arr, axis, start) 函数向后滚动特定的轴到一个特定位置
axis:要向后滚动的轴,其它轴的相对位置不会改变
start:默认为零,表示完整的滚动。会滚动到特定位置。
a = np.arange(8).reshape(2,2,2)
b=np.rollaxis(a,2)#将轴 2 滚动到轴 0(宽度到深度)
c=np.rollaxis(a,2,1) # 将轴 0 滚动到轴 1:(宽度到高度)
原数组:
[[[0 1]
[2 3]]
[[4 5]
[6 7]]]
b:
[[[0 2]
[4 6]]
[[1 3]
[5 7]]]
c:
[[[0 2]
[1 3]]
[[4 6]
[5 7]]]
numpy.swapaxes(arr, axis1, axis2)交换数组的两个轴
修改数组维度
numpy.broadcast(arr1,arr2) 用于模仿广播的对象,它返回一个对象,该对象封装了将一个数组广播到另一个数组的结果。
numpy.broadcast_to(array, shape, subok)
numpy.expand_dims(arr, axis) 过在指定位置插入新的轴来扩展数组形状
numpy.squeeze(arr, axis) 从给定数组的形状中删除一维的条目
连接数组
numpy.concatenate((a1, a2, …), axis) 沿指定轴连接相同形状的两个或多个数组
numpy.stack(arrays, axis) 沿新轴
堆叠
数组序列
分割数组
numpy.split(ary, indices_or_sections, axis) 注意: 如果是一个数组,为沿轴切分的位置(左开右闭]
numpy.hsplit 用于水平分割数组
numpy.vsplit 沿着垂直轴分割
数组元素的添加与删除
numpy.resize(arr, shape)
如果新数组大小大于原始大小,则包含原始数组中的元素的副本
numpy.append(arr, values, axis=None) values需要和arr形状相同,axis:默认为 None。当axis无定义时,是横向加成,返回总是为一维数组!
numpy.insert(arr, obj, values, axis) 未传递 Axis 参数,在插入之前输入数组会被展开
Numpy.delete(arr, obj, axis) 返回从输入数组中删除指定子数组的新数组。 与 insert() 函数的情况一样,如果未提供轴参数,则输入数组将展开。
numpy.unique(arr, return_index, return_inverse, return_counts) 去除数组中的重复元素
NumPy 位运算
bitwise_and对数组元素执行位与操作
bitwise_or对数组元素执行位或操作
invert按位取反
left_shift向左移动二进制表示的位
right_shift向右移动二进制表示的位
numpy函数操作
字符串函数(numpy.char组类中)
add()对两个数组的逐个字符串元素进行连接
multiply()返回按元素多重连接后的字符串
center()居中字符串
capitalize()将字符串第一个字母转换为大写
title()将字符串的每个单词的第一个字母转换为大写
lower()数组元素转换为小写
upper()数组元素转换为大写
split()指定分隔符对字符串进行分割,并返回数组列表
splitlines()返回元素中的行列表,以换行符分割
strip()移除元素开头或者结尾处的特定字符
join()通过指定分隔符来连接数组中的元素
replace()使用新字符串替换字符串中的所有子字符串
decode()数组元素依次调用str.decode
encode()数组元素依次调用str.encode
数学函数
sin()、cos()、tan()
numpy.around(a,decimals) 数返回指定数字的四舍五入值
numpy.floor() 向下取整
numpy.ceil() 向上取整
算术函数
add(),subtract(),multiply() 和 divide()加减乘除
numpy.reciprocal() 返回参数逐元素的倒数
numpy.power() 幂运算
numpy.mod() 余数
NumPy 统计函数
numpy.amin() 和 numpy.amax()计算数组中的元素沿指定轴的最小大值
numpy.ptp() 最大值 - 最小值
numpy.percentile(a, q, axis) q要计算的百分位数
numpy.median() 中位数
numpy.mean() 算术平均值是沿轴的元素的总和除以元素的数量
numpy.average() 没有指定轴,则数组会被展开
np.std 标准差
np.var 方差
NumPy 排序、条件刷选函数
numpy.sort(a, axis, kind, order)kind: 默认为’quicksort’(快速排序)
numpy.argsort() 返回的是数组值从小到大的索引值。
numpy.lexsort() 对多个序列进行排序,返回索引值,将优先级高的项放在后面
sort_complex(a)对复数按照先实部后虚部的顺序进行排序
partition(a, kth[, axis, kind, order]) 分区排序
argpartition(a, kth[, axis, kind, order] 可以通过关键字 kind 指定算法沿着指定轴对数组进行分区
numpy.argmax() 和 numpy.argmin() 沿给定轴返回最大和最小元素的索引
numpy.nonzero() 函数返回输入数组中非零元素的索引。
numpy.where()
numpy.extract() 据某个条件从数组中抽取元素,返回满条件的元素
字节交换
numpy.ndarray.byteswap() 函数将 ndarray 中每个元素中的字节进行大小端转换。
NumPy 副本和视图
视图一般发生在:
视图修改改变原值
1、numpy 的切片操作返回原数据的视图。
2、调用 ndarray 的 view() 函数产生一个视图。
副本一般发生在:
副本修改原值不变
Python 序列的切片操作,调用deepCopy()函数。
调用 ndarray 的 copy() 函数产生一个副本
NumPy 矩阵库(Matrix)numpy.matlib
numpy.matlib.empty(shape, dtype, order) 返回一个新的矩阵
numpy.matlib.zeros()
numpy.matlib.ones()
numpy.matlib.eye()
numpy.matlib.identity() 单位矩阵
numpy.matlib.rand()
矩阵总是二维的,而 ndarray 是一个 n 维数组。 两个对象都是可互换的
NumPy 线性代数
dot两个数组的点积,即元素对应相乘。
vdot两个向量的点积
inner两个数组的内积
matmul两个数组的矩阵积
linalg.det()数组的行列式
linalg.solve()求解线性矩阵方程
linalg.inv() 计算矩阵的乘法逆矩
NumPy IO
numpy.save(file, arr, allow_pickle=True, fix_imports=True)
numpy.savez() 函数将多个数组保存到以 npz 为扩展名的文件中。
np.loadtxt(FILENAME, dtype=int, delimiter=’ ')
np.savetxt(FILENAME, a, fmt="%d", delimiter=",")
python分析基金数据,[Python数据分析]numpy基金会,基础相关推荐
- python分析基金数据_python基金会(大数据分析),的,PYTHON,基础,选择,练习
第一章 单元测试 1.判断题: Python语言是一种高级语言. 选项: A:对 B:错 答案: [对] 2.多选题: Jupyter notebook中运行单元格的方法有哪几种?( ) 选项: A: ...
- python大数据分析实例-如何用Python分析大数据(以Twitter数据挖掘为例)
原标题:如何用Python分析大数据(以Twitter数据挖掘为例) 来源:艾翻译(http://www.itran.cc/) 原文标题:Twitter Data Mining: A Guide to ...
- LIGO 用 Python 分析引力波数据
LIGO 用 Python 分析引力波数据 美国科学家11日宣布,他们去年9月首次探测到引力波.这一发现印证了物理学大师爱因斯坦100年前的预言.宣布这一发现的,是激光干涉引力波天文台(LIGO)的负 ...
- 使用Python对股票数据进行数据分析(一)-计算日线行情、5日均线、10日均线行情并显示
使用Python对股票数据进行数据分析(一)-计算日线行情.5日均线.10日均线行情并显示 各种炒股软件上可以显示各种技术指标,可以帮助投资者进行技术分析.这些股市中的这些指标都是怎么计算出来的呢?这 ...
- 使用Python对股票数据进行数据分析(二)-使用ta-lib库获取日线行情、5日均线、10日均线行情并显示
使用Python对股票数据进行数据分析(二)-使用ta-lib库获取日线行情.5日均线.10日均线行情并显示 这个文章其实和我的上一篇文章,https://blog.csdn.net/lost0910 ...
- python sci数据_scanpy学习笔记:用Python分析单细胞数据
Scanpy 是一个基于 Python 分析单细胞数据的软件包,内容包括预处理,可视化,聚类,拟时序分析和差异表达分析等.本文翻译自 scanpy 的官方教程 Preprocessing and cl ...
- 大数据如何使用Python分析微信数据
截至2020年第二季度,微信拥有超过27亿活跃用户.这意味着,如果你正在阅读大数据如何使用Python分析微信数据,那么你很可能是微信用户.但是,你到底有多少微信用户?你实际发布了多少?我们可以使用P ...
- 零基础小白如何使用Python分析调查数据
进行调查和民意调查是收集数据和深入了解诸如客户为何离开我们网站等问题的最佳方法之一.还是为什么选民会吸引这位候选人?但是分析调查数据可能是一个真正的挑战! 在本教程中,我们将逐步介绍如何使用Pytho ...
- Python数据分析——NumPy数值计算基础(二)
Python数据分析--NumPy数值计算基础(二) 思维导图: 数据的csv文件存取 csv(Comma-Separated Value,逗号分隔值)文件:是一种常见的文件格式,用来存储批量数据. ...
最新文章
- 解决Maven工程中报 Missing artifact jdk.tools:jdk.tools:
- [FLASH_AS]Flash as3 addEventListener事件监听传递参数
- [ARM异常]-linux中(aarch/aarch64)异常向量表介绍
- 这份程序员的简历刷爆了九月的朋友圈
- vue 下echarts卸载和安装指定版本
- docker如何安装vim和yum命令?
- list python 访问 键值对_学完Python,我决定熬夜整理这篇总结...
- python中run函数作用_python3多线程中如何改写run()函数?
- centos 7 64位虚机上android4环境运行
- mysql有关时间教程_MySQL教程21-日期和时间类型
- 输出滑动窗口最大值(双端队列)
- 手机号码归属地查询api [开源]
- 数学建模【开会总结】
- solr配置索引库启动tomcat报错记录及解决
- html水平线向上移动代码,HTML 水平线
- 批量提取多个Excel文件内指定单元格的数据(文件名和数据)
- 使用apache log解决高并发下log4j引起大量线程block问题
- matlab premnmx 逆函数,请帮我吧这些数据利用MATLAB premnmx语句进行归一化,高分跪求。...
- 坤坤老师告诉同学们什么是观察者模式
- 相分离——下一代表观遗传修饰?