标签:字典 精确 python模块 正序 complex 字段 text 方法 返回值
数据分析及机器学习底层库,C语言实现,提供基础数值计算
核心是多维数组的操作,减少python对多维数组操作时的循环
numpy.ndarray类表示n维数组类
ndarray对象在内存中储存内容
特点
类型 | 符号 | 字符码(进行类型转换,自定义符合类型标注) |
---|---|---|
布尔 | bool_ | ? |
有符号整数 | int8(-128~127)/int16/32/64 | i1/i2/i4/i8 |
无符号整数 | uint8(0~255)/uint16/32/64 | u1/u2/u4/u8 |
浮点数 | float/16/32/64 | f2/f4/f8 |
复数 | complex64/128 | c8/c16 |
字符串 | str_ | U<字符数> |
日期 | datetime64 | M8[Y] M8[M] M8[D] M8[h] M8[m] M8[s] |
日期 datetime64
自定义复合类型
# 实例
data=[
(‘zs‘, [90, 80, 85], 15),
(‘ls‘, [92, 81, 83], 16),
(‘ww‘, [95, 85, 95], 15)
]
# 方法一:字符串对应每条数据格式
# 创建
a = numpy.array(data,dtype=‘U3, 3int32, int32‘)
# 访问
a[0][‘f0‘] # ‘zs‘
# 方法二:字典对应每条数据字段名称
# 创建
c = np.array(data, dtype={‘names‘: [‘name‘, ‘scores‘, ‘ages‘],
‘formats‘: [‘U3‘, ‘3int32‘, ‘int32‘]})
# 访问
c[0][‘name‘] # ‘zs‘
# 方法三:列表对应每条数据字段名称
# 创建
b = np.array(data, dtype=[(‘name‘, ‘str_‘, 2),
(‘scores‘, ‘int32‘, 3),
(‘ages‘, ‘int32‘, 1)])
# 访问
b[0][‘name‘] # ‘zs‘
可查看和修改部分属性
偏移缩放转置:
遍历(扁平迭代器)
类型转换:
变维:
变维类型 | 方法 | 描述 | 数据是否共享 |
---|---|---|---|
就地变维 | shape() | 转为指定格式,无返回值 | 共享(本身) |
就地变维 | resize() | 转为指定格式,无返回值 | 共享(本身) |
视图变维 | reshape() | 转为指定格式,返回新数组对象 | 共享(同一数据) |
视图变维 | reval() | 退化为一维,返回新数组对象 | 共享共享(同一数据) |
复制变维 | flatten() | 退化为一维,返回新数组对象 | 不共享(不同数据) |
array1 = numpy.arange(1,9) # 1*8 一维数组
array1.shape(2,4) # 2*4 二维数组
array1.resize(2,4) # 2*4 二维数组
array2 = array1.reshape(2,4) # 2*4 二维数组
array1 = numpy.arange(1,9) # 1*8 一维数组
array1.shape(2,2,2) # 2*2*2 三维数组
array1.resize(2,2,2) # 2*2*2 三维数组
array3 = array1.reshape(2,2,2) # 2*2*2 三维数组
array4 = array3.reval() # 1*8 一维数组
array1 = numpy.arange(1,9) # 1*8 一维数组
array5 = array1.flatten() # 1*8 一维数组
array1,array2,array3,array4 共享数据
array5 独立数据
案例:
生成3*3*3的三维数组,元素为1到27
array1 = numpy.arange(1,28).resize(3,3,3)
切片:
# 一维数组
a = numpy.arange(1, 10)
# 1 2 3 4 5 6 7 8 9
# 正序
print(a[::]) # 1 2 3 4 5 6 7 8 9
print(a[:]) # 1 2 3 4 5 6 7 8 9
# 倒序
print(a[::-1]) # 9 8 7 6 5 4 3 2 1
# 省略start,倒推到边界,step=1就end-1倒推,step=-1就end+1倒推
print(a[:4:-1]) # 9 8 7 6 相当于[8:4:-1]
print(a[:-4:-1]) # 9 8 7 相当于[-1:-4:-1]
# 省略end,正推到边界,step=1就start+1正推,step=-1就start-正推
print(a[7::-1]) # 8 7 6 5 4 3 2 1 相当于[7:-1:-1]
print(a[-7::-1]) # 3 2 1 相当于[-7:-10:-1]
掩码:根据指定条件进行筛选
array = numpy.arange(1, 5)
mask = [True, False,True, False,True]
print(array[mask])
# array([1,3,5])
print(array[array>3])
# array([4,5])
print(array>3)
# array([False, False,True, True,True])
合并拆分
水平方向
合并 c = numpy.hstack((a,b))/row_stack((a,b))
等分a,b = numpy.hsplit(c,2)
a = numpy.arange(1,1+6).reshape(2,3)
# array([[1,2,3],
# [4,5,6]])
b = numpy.arange(1+6,1+12).reshape(2,3)
# array([[7,8,9],
# [10,11,12]])
c = numpy.hstack((a,b))
# array([[1,2,3,7,8,9],
# [4,5,6,10,11,12]])
d,e = numpy.hsplit(c,2)
# d同a,e同b
垂直方向
合并c = numpy.vstack((a,b))/column_stack((a,b))
等分a,b = numpy.vsplit(c,2)
a = numpy.arange(1,1+6).reshape(2,3)
# array([[1,2,3],
# [4,5,6]])
b = numpy.arange(1+6,1+12).reshape(2,3)
# array([[7,8,9],
# [10,11,12]])
c = numpy.vstack((a,b))
# array([[1,2,3],
# [4,5,6],
# [7,8,9],
# [10,11,12]])
d,e = numpy.vsplit(c,2)
# d同a,e同b
深度方向
合并c = numpy.dstack((a,b)),等分a,b = numpy.dsplit(c,2)
a = numpy.arange(1,1+6).reshape(2,3)
# array([[1,2,3],
# [4,5,6]])
b = numpy.arange(1+6,1+12).reshape(2,3)
# array([[7,8,9],
# [10,11,12]])
c = numpy.dstack((a,b))
# array([[[1,7],
# [2,8],
# [3,9]],
# [[4,10],
# [5,11],
# [6,12]]])
d,e = numpy.dsplit(c,2)
# array([[[1],
# [2],
# [3]],
# [[4],
# [5],
# [6]]])
通用方法
标签:字典 精确 python模块 正序 complex 字段 text 方法 返回值
原文地址:https://www.cnblogs.com/yangjunh/p/pythonmodule_numpy.html