栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

numpy入门到精通及numpy实践(持续更新中)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

numpy入门到精通及numpy实践(持续更新中)

目录

前言

安装

导入

数据类型及数组创建

1.常量

np.nan

np.inf

np.pi

np.e

更新

2.数据类型

时间日期和时间增量 

datetime64的应用

工作日(busday)


前言

NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库n为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA 用其处理一些本来使用 C++,Fortran 或 Matlab 等所做的任务。

安装

一般anaconda自带,不然就pip

#pip安装
pip install numpy

导入
import numpy as np

数据类型及数组创建

1.常量

np.nan

两个np.nan是不相等的。

print(np.nan==np.nan)   #false



#例子
import numpy as np
x = np.array([1,2,np.nan,4])
y = np.isnan(x)
print(y)
#[false,false,true,false] 

np.inf

正无穷大,这个常数在优化带有约束条件的函数时可能会能得到,一般用于数学场景。

np.pi

圆周率

np.e

自然常数e,用于数学计算,但是我还没用过。

更新

2.数据类型
类型备注说明
bool_ = bool88位布尔类型
int8 = byte8位整型
int16 = short16位整型
int32 = intc32位整型
int_ = int64 = long = int0 = intp64位整型
uint8 = ubyte8位无符号整型
uint16 = ushort16位无符号整型
uint32 = uintc32位无符号整型
uint64 = uintp = uint0 = uint64位无符号整型
float16 = half16位浮点型
float32 = single32位浮点型
float_ = float64 = double64位浮点型
str_ = unicode_ = str0 = unicode|Unicode 字符串
datetime64|日期时间类型
timedelta64|表示两个时间之间的间隔

时间日期和时间增量 

使用arange()创建 datetime64 数组,用于生成日期范围。

import numpy as np

t = np.arange('2022-04-25', '2022-04-27', dtype=np.datetime64)
print(a)

print(a.dtype)  # datetime64[D]

t = np.arange('2022-04-25 20:00', '2022-04-27', dtype=np.datetime64)
print(a)
']
print(a.dtype)  # datetime64[m]

t = np.arange('2022-04', '2022-12', dtype=np.datetime64)
print(a)

print(a.dtype)  # datetime64[M]

 下面时间增量偷了一段代码:

timedelta64 的运算,不用过多解释。

import numpy as np

a = np.timedelta64(1, 'Y')
b = np.timedelta64(6, 'M')
c = np.timedelta64(1, 'W')
d = np.timedelta64(1, 'D')
e = np.timedelta64(10, 'D')

print(a)  # 1 years
print(b)  # 6 months
print(a + b)  # 18 months
print(a - b)  # 6 months
print(2 * a)  # 2 years
print(a / b)  # 2.0
print(c / d)  # 7.0
print(c % e)  # 7 days

datetime64的应用

工作日(busday)

【Python 库】NumPy 超详细教程(2):数据类型 - 丹枫无迹 - 博客园

从这篇博客中借鉴了一些可以看看,但是不如读源码。

 源码和源码中的例子:

offsets这个参数指的是第一个参数dates的偏移量,0就是dates后第一个工作日或者你定义的日期,-1就是上一个,以此类推。

从weekmask这个参数可以看到:工作日是 7 个布尔标志定义的,你也可以'1111111'一周都是工作日。

如果当前日期为非工作日,默认报错。可以用roll参数指定 forward 或 backward 规则来避免报错。(一个是向前取第一个有效的工作日,一个是向后取第一个有效的工作日)

busday_offset(dates, offsets, roll='raise', weekmask='1111100', holidays=None, busdaycal=None, out=None)
Examples
--------
>>> # First business day in October 2011 (not accounting for holidays)
... np.busday_offset('2011-10', 0, roll='forward')
numpy.datetime64('2011-10-03')
>>> # Last business day in February 2012 (not accounting for holidays)
... np.busday_offset('2012-03', -1, roll='forward')
numpy.datetime64('2012-02-29')
>>> # Third Wednesday in January 2011
... np.busday_offset('2011-01', 2, roll='forward', weekmask='Wed')
numpy.datetime64('2011-01-19')
>>> # 2012 Mother's Day in Canada and the U.S.
... np.busday_offset('2012-05', 1, roll='forward', weekmask='Sun')
numpy.datetime64('2012-05-13')

>>> # First business day on or after a date
... np.busday_offset('2011-03-20', 0, roll='forward')
numpy.datetime64('2011-03-21')
>>> np.busday_offset('2011-03-22', 0, roll='forward')
numpy.datetime64('2011-03-22')
>>> # First business day after a date
... np.busday_offset('2011-03-20', 1, roll='backward')
numpy.datetime64('2011-03-21')
>>> np.busday_offset('2011-03-22', 1, roll='backward')
numpy.datetime64('2011-03-23')

以下两段都是不知从何处偷来的代码。

返回指定日期是否是工作日。

import numpy as np

# 2020-07-10 星期五
a = np.is_busday('2020-07-10')
b = np.is_busday('2020-07-11')
print(a)  # True
print(b)  # False

返回两个日期之间的工作日数量。

import numpy as np

# 2020-07-10 星期五
begindates = np.datetime64('2020-07-10')
enddates = np.datetime64('2020-07-20')
a = np.busday_count(begindates, enddates)
b = np.busday_count(enddates, begindates)
print(a)  # 6
print(b)  # -6

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835633.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号