Numpy学习笔记——常用函数

2023-11-03

3.1 文件读写

3.2 动手实践:读写文件

savetxt():将数组保存到文件中

i2 = np.eye(2)
print i2
np.savetxt("eye.txt", i2)

3.3 CSV 文件

3.4 动手实践:读入CSV 文件

NumPy中的loadtxt函数可以方便地读取CSV文件,自动切分字段,并将数据载入NumPy数组。
usecols的参数为一个元组,以获取第7字段至第8字段的数据;
unpack参数设置为True,意思是分拆存储不同列的数据,即分别将收盘价和成交量的数组赋值给变量c和v;
调用average函数,并将v作为权重参数使用;

c,v=np.loadtxt('data.csv', delimiter=',', usecols=(6,7), unpack=True)

vwap = np.average(c, weights=v)
print "VWAP =", vwap
The output is
VWAP = 350.589549353
print "mean =", np.mean(c)
mean = 351.037666667

t = np.arange(len(c))
print "twap =", np.average(c, weights=t)

3.8 动手实践:找到最大值和最小值

ptp函数可以计算数组的取值范围

h,l=np.loadtxt('data.csv',delimiter=',', usecols=(4,5), unpack=True)
print "highest =", np.max(h)
print "lowest =", np.min(l)

print "Spread high price", np.ptp(h)
print "Spread low price", np.ptp(l)

3.9 统计分析

中位数函数、排序函数

//中位数
print "median =", np.median(c)
//排序
sorted_close = np.msort(c)
N = len(c)
//方差
print "variance =", np.var(c)
//取对数
np.log(c)

NumPy中的diff函数可以返回一个由相邻数组元素的差值构成的数组。

//计算股票收益率
returns = np.diff( arr ) / arr[ : -1]
//标准差
print "Standard deviation =", np.std(returns)
//获取满足指定条件的元素 where
posretindices = np.where(returns > 0)

3.13 日期分析

获取28-01-2011类型字符串的日期对应的星期几

def datestr2num(s):
    return datetime.datetime.strptime(s, "%d-%m-%Y").date().weekday()
//converters函数转换日期字符串为具体数字
dates, close=np.loadtxt('data.csv', delimiter=',', usecols=(1,6), converters={1:datestr2num}, unpack=True)
//创建一个包含5个元素的数组
averages = np.zeros(5)

take函数可以按照这些索引值从数组中取出相应的元素

for i in range(5):
    indices = np.where(dates == i)
    prices = np.take(close, indices)
    avg = np.mean(prices)
    print "Day", i, "prices", prices, "Average", avg
    averages[i] = avg
top = np.max(averages)
print "Highest average", top
//返回最大值的索引值
print "Top day of the week", np.argmax(averages)
bottom = np.min(averages)
print "Lowest average", bottom
//返回最小值的索引值
print "Bottom day of the week", np.argmin(averages)
def datestr2num(s):
    return datetime.strptime(s, "%d-%m-%Y").date().weekday()
dates, open, high, low, close=np.loadtxt('data.csv', delimiter=',', usecols=(1, 3, 4,5, 6), converters={1: datestr2num}, unpack=True)
close = close[:16]
dates = dates[:16]

# get first Monday
first_monday = np.ravel(np.where(dates == 0))[0]
print "The first Monday index is", first_monday

# get last Friday
last_friday = np.ravel(np.where(dates == 4))[-1]
print "The last Friday index is", last_friday

weeks_indices = np.arange(first_monday, last_friday + 1)
print "Weeks indices initial", weeks_indices
weeks_indices = np.split(weeks_indices, 3)
print "Weeks indices after split", weeks_indices

def summarize(a, o, h, l, c):
    monday_open = o[a[0]]
    week_high = np.max( np.take(h, a) )
    week_low = np.min( np.take(l, a) )
    friday_close = c[a[-1]]
    return("APPL", monday_open, week_high, week_low, friday_close)
weeksummary = np.apply_along_axis(summarize, 1, weeks_indices, open, high, low, close)
print "Week summary", weeksummary
np.savetxt("weeksummary.csv", weeksummary, delimiter=",", fmt="%s")

np.exp()函数

x = np.arange(5)
print "Exp", np.exp(x)

np.linspace()函数:返回将-1到0分成5分的点

print "Linspace", np.linspace(-1, 0, 5)

weights.sum():返回这个数组的和
weights/weights.sum():会将weights中的所有元素除以分母

weights = np.exp(np.linspace(-1. , 0. , N))
weights /= weights.sum()
print "Weights", weights

convolve函数:

c = np.loadtxt('data.csv', delimiter=',', usecols=(6,), unpack=True)
ema = np.convolve(weights, c)[N-1:-N+1]
t = np.arange(N - 1, len(c))
plot(t, c[N-1:], lw=1.0)
plot(t, ema, lw=2.0)
show()

绘制布林带

import numpy as np
import sys
from matplotlib.pyplot import plot
from matplotlib.pyplot import show

N = int(sys.argv[1])
weights = np.ones(N) / N
print "Weights", weights

c = np.loadtxt('data.csv', delimiter=',', usecols=(6,), unpack=True)
sma = np.convolve(weights, c)[N-1:-N+1]
deviation = []

for i in range(N - 1, C):
if i + N < C:
    dev = c[i: i + N]
    else:
    dev = c[-N:]
    averages = np.zeros(N)
    averages.fill(sma[i - N - 1])
    dev = dev - averages
    dev = dev ** 2
    dev = np.sqrt(np.mean(dev))
    deviation.append(dev)

deviation = 2 * np.array(deviation)
print len(deviation), len(sma)
upperBB = sma + deviation
lowerBB = sma - deviation

c_slice = c[N-1:]
between_bands = np.where((c_slice < upperBB) & (c_slice > lowerBB))

print lowerBB[between_bands]
print c[between_bands]
print upperBB[between_bands]
between_bands = len(np.ravel(between_bands))
print "Ratio between bands", float(between_bands)/len(c_slice)

t = np.arange(N - 1, C)
plot(t, c_slice, lw=1.0)
plot(t, sma, lw=2.0)
plot(t, upperBB, lw=3.0)
plot(t, lowerBB, lw=4.0)
show()

NumPy的linalg包是专门用于线性代数计算

import numpy as np
import sys

N = int(sys.argv[1])
c = np.loadtxt('data.csv', delimiter=',', usecols=(6,), unpack=True)
b = c[-N:]
b = b[::-1]
print "b", b
A = np.zeros((N, N), float)
print "Zeros N by N", A
for i in range(N):
    A[i, ] = c[-N - 1 - i: - 1 - i]
print "A", A
(x, residuals, rank, s) = np.linalg.lstsq(A, b)
print x, residuals, rank, s
print np.dot(b, x)

3.28 动手实践:绘制趋势线

import numpy as np
from matplotlib.pyplot import plot
from matplotlib.pyplot import show
def fit_line(t, y):
    A = np.vstack([t, np.ones_like(t)]).T
    return np.linalg.lstsq(A, y)[0]
h, l, c = np.loadtxt('data.csv', delimiter=',' , usecols=(4, 5, 6), unpack=True)
pivots = (h + l + c ) / 3
print "Pivots", pivots
t = np.arange(len(c))
sa, sb = fit_line(t, pivots - (h - l))
ra, rb = fit_line(t, pivots + (h - l))
support = sa * t + sb
resistance = ra * t + rb
condition = (c > support) & (c < resistance)
print "Condition", condition
between_bands = np.where(condition)
print support[between_bands]
print c[between_bands]
print resistance[between_bands]
between_bands = len(np.ravel(between_bands))
print "Number points between bands", between_bands
print "Ratio between bands", float(between_bands)/len(c)
print "Tomorrows support", sa * (t[-1] + 1) + sb
print "Tomorrows resistance", ra * (t[-1] + 1) + rb
a1 = c[c > support]
a2 = c[c < resistance]
print "Number of points between bands 2nd approach" ,len(np. intersect1d(a1, a2))
plot(t, c)
plot(t, support)
plot(t, resistance)
show()

3.30 动手实践:数组的修剪和压缩

clip方法返回一个修剪过的数组,也就是将所有比给定最大值还大的元素全部设为给定的最大值,而所有比给定最小值还小的元素全部设为给定的最小值。

a = np.arange(5)
print "a =", a
print "Clipped", a.clip(1, 2)

compress方法返回一个根据给定条件筛选后的数组

a = np.arange(4)
print a
print "Compressed", a.compress(a > 2)

prod方法,可以计算数组中所有元素的乘积

b = np.arange(1, 9)
print "b =", b
print "Factorial", b.prod()

调用cumprod方法,计算数组元素的累积乘积

print "Factorials", b.cumprod()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Numpy学习笔记——常用函数 的相关文章

随机推荐

  • 使用腾讯云“自定义监控”监控GPU使用率

    欢迎大家前往 云 社区 获取更多腾讯海量技术实践干货哦 作者 李想 随着人工智能以及比特币的火热 GPU云服务的使用场景是越来越广 在很多场景下我们也需要获取GPU服务器的性能参数来优化程序的执行 目前腾讯云提供的GPU云服务器并未提供GP
  • 我是学计算机的表情包,计算机考试表情包 - 计算机考试微信表情包 - 计算机考试QQ表情包 - 发表情 fabiaoqing.com...

    电子城轨通信计算机 快看 那个学会计的上吊了 城轨 上吊 会计 计算机 通信表情 对方不想和你说话 并向你扔了计算机基础 对方不想和你说话 并向你扔了 斗图 怼人表情表情 电力工程学 VS 计算机信息管理学 来看看你现在学的专业毕业之后能够
  • 网络安全等级保护通用解决方案参考模板

    目录 1 1 项目背景 1 2 现状描述 1 2 1业务现状 1 2 2基础设施现状 1 2 3系统差距分析 2 1 从合规维度分析 2 1 1 安全管理体系要求 2 1 2 安全技术措施要求 2 2 从快速应对新安全威胁分析 2 3 从整
  • 搭建maven仓库(nexus)及如何将依赖上传maven仓库

    搭建nexus及如何将依赖上传maven仓库 一 Nexus仓库搭建 1 1 安装maven 1 1 1 通过官网下载maven包 1 1 2 直接在linux使用wget命令下载 1 1 3 解压安装 1 1 4 配置环境变量 1 2 安
  • gis海量资源网盘提供VIP账号无广告高速下载 (更新更多资源)

    资源网盘下载地址 http laoheitan bego cc 城通网盘 vip帐号共享 省去 烦人的 广告 多任务同时下载 打开网盘http laoheitan bego cc 后 登录VIP账号 再获取资源下载的链接后 就可享有无广告
  • CSS揭秘学习笔记(背景与边框)

    背景与边框 1 半透明边框 我们的预期是给box容器设置一个白色背景以及一个半透明的边框 但是box的背景色会从它的半透明边框上面透上来 默认情况下 背景会延伸到边框所在的区域
  • STM32 memset卡死

    MDK官方给的文档里面 memset应该按照memset void length value 的顺序 不能用C语言中的顺序menset void value length 的顺序
  • selenium页面元素定位、操作

    1 打开 关闭浏览器 2 打开URL链接 3 定位单个页面元素 3 1 通过ID定位 3 2 通过name定位 3 3 通过classname定位 3 4 通过CSS定位 3 5 通过链接的文本信息定位 3 6 通过XPath定位 3 6
  • C++String 和 char类型的区别和用法辨析

    众所周知 C 中有两种类型类型的字符串 一种是STL的string容器 另一种是char类型的数组 一 基本区别 要说最基本的区别 就是string可以包含多个字符 char类型只有1个字符 且分别用双引号和单引号 string temp1
  • 门电路OD门

    漏极开路输出的门电路 OD门 为了满足输出电平的变换 输出大负载电流 以及实现 线与 功能 将CMOS门电路的输出级做成漏极开路的形式 称为漏极开路输出的门电路 简称OD Open Drain Output 门 1 结构和符号 图为OD输出
  • 使用jquery加载子页面

    官方解释说明 用法 selector load URL data callback 必需的 URL 参数规定您希望加载的 URL 可选的 data 参数规定与请求一同发送的查询字符串键 值对集合 可选的 callback 参数是 load
  • 【NLP】第 6 章:XGBoost 超参数

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 【鸿蒙应用ArkTS开发系列】- 常量类定义和使用

    本篇为入门基础知识介绍 作为代码学习记录使用 请选择性阅读 一 常量类定义 在ArkTS中 定一个常量很简单 具体如下 export const TAB HOME INDEX number 1 export const TAB HOME N
  • Qt学习——控件Widgets

    Qt的控件可以在设计窗口左边部分看到 各个控件的使用 可以直接拖动至Dialog中即可 将界面布置完成后 再在源文件中编写对应的代码 下面通过一个综合的使用 熟悉一下常用控件 1 首先将一个QLabel 一个QLineEdit 两个QPus
  • 使用CURL来获取COOKIE的方法

    php curl lib 中 设置一个Cookie文件 cookeFilePath 在初始化以后和执行访问页面以前调用 curl setopt c CURLOPT COOKIEFILE cookieFilePath curl setopt
  • 奇奇怪怪的电脑小知识

    1 关闭键盘右上角最右边的灯 不知道怎么把这个灯点亮了 关闭的话 FN win 或者按ScrollLock键盘 后续再补充别的吧
  • AIGC:文生图模型Stable Diffusion

    1 Stable Diffusion介绍 Stable Diffusion 是由CompVis Stability AI和LAION共同开发的一个文本转图像模型 它通过LAION 5B子集大量的 512x512 图文模型进行训练 我们只要简
  • Opencv交通标志识别

    文章目录 前言 效果预览 数据集下载地址 训练模型 模型预测 项目结构及源码下载 前言 本文使用的数据集包含43种交通标志 使用opencv以及卷积神经网络训练模型 识别交通标志 使用pyqt5制作交通标志识别GUI的界面 效果预览 如视频
  • python读取pdf并写入excel_Python读取pdf表格写入excel代码方法

    本篇文章小编给大家分享一下Python读取pdf表格写入excel代码方法 文章代码介绍的很详细 小编觉得挺不错的 现在分享给大家供大家参考 有需要的小伙伴们可以来看看 避免CV大法 pdf 文件的表格的数据可以复制 但是这是一项非常繁琐的
  • Numpy学习笔记——常用函数

    3 1 文件读写 3 2 动手实践 读写文件 savetxt 将数组保存到文件中 i2 np eye 2 print i2 np savetxt eye txt i2 3 3 CSV 文件 3 4 动手实践 读入CSV 文件 NumPy中的