Numpy 数据类型及数组基础

numpy概述

  • NumPy是Python中科学计算的基础包。
  • 它是⼀个Python库
  • 提供多维数组对象,各种派⽣对象(如掩码数组和矩阵
  • 提供对数据/数组各种操作

数据类型

  • numpy的数据类型和c语⾔中的数据类型实现并不⼀样
  • 可以理解对基础数据类型的优化和升级
  • ⼀切为了快速处理⼤型/⼤量数据为宗旨

基础数据类型

  • bool_: 布尔值,⽤⼀个字节存储
  • int_: 默认整型,通常是int64/int32
  • intc: 整型,通常是int32/int64
  • intp: ⽤作索引的整型,通常是int32/int64
  • int8/16/32/64: 整型
  • uint8/16/32/64: ⽆符号整型
  • float_: float64的简写
  • float16: 半精度浮点型, 1bit符号, 5bits指数,10bits尾数
  • float32: 单精度浮点型, 1bit符号,8bits指数,23bits尾数
  • float64: 双精度浮点型, 1bit符号,11bits指数,52bits尾数
  • complex_: complex128
  • complex64: 复数,两个32位浮点数表示
  • complex128: 复数, 由两个64位浮点数表示

简写型数据类型

  • ‘b’: 字节型, np.dtype(‘b’)
  • ‘i’: 有符号整型, np.dtype(‘i4’)就是⼀个 np.int32类型
  • ’u’: ⽆符号整型, np.dtype(‘u8’)就是⼀个np.uint64
  • ‘f’: 浮点型, np.dtype(‘f8’)
  • ‘c’: 复数浮点型
  • ’S’: ‘a’: 字符串, np.dtype(‘S6’)
  • ‘U’: Unicode编码字符串, n’p.dtype(‘U’) 就是np.str_类型
  • ‘V’: 原⽣数据, ⽐如空或者void, np.dtype(‘V’)就是np.void

其中如果出现<则表示低字节序(little endian), 同理>则表示⾼字节序

numpy数组基础

  • 数组操作是numpy的核⼼
  • 数组跟list类似,但数组要求内容类型必须⼀致,如果不⼀致需要进⾏强制转换,可能会损失精度。相当于是一个拓展的列表。
  • 主要包括
    • 数组的属性
    • 数组的索引
    • 数组的切分
    • 数组的编写
    • 数组的拼接和分裂

数组的属性

  • numpy可以有多维数组
  • 其属性包括:
    • 维度(ndim):一维、二维、三维
    • 形状(shape):通常可以理解成数组各个维度的⻓度
    • ⻓度(size): 数组所存储的元素的总个数
    • 数据类型(dtype): 数组的数据类型(数组要求数据必须同⼀类型)
    • itemsize: 每个元素的字节⻓度
    • nbytes: nbytes=itemsize x size

下面是一个数组的例子

import numpy as np
# ⽣成三个数组
a1 = np.random.randint(100, size=10) # 参数siz是⽣成数组的shape属性
a2 = np.random.randint(100, size=(4,6))
a3 = np.random.randint(100, size=(2,5,6))
# 打印出数组a1, a2, a3的属性
for a in [a1, a2, a3]:
 print("dtype={}, ndim={}, shape={}, size={}, itemsize={}, nbytes={}".\
 format(a.dtype, a.ndim, a.shape, a.size, a.itemsize, a.nbytes))
dtype=int32, ndim=1, shape=(10,), size=10, itemsize=4, nbytes=40
dtype=int32, ndim=2, shape=(4, 6), size=24, itemsize=4, nbytes=96
dtype=int32, ndim=3, shape=(2, 5, 6), size=60, itemsize=4, nbytes=240

几个特殊数组的创建

import numpy as np
x = np.empty(5)
print("Empty array: \n", x)
x = np.zeros(10)
print("Zeros Array: \n", x)
x = np.ones(10)
print("Ones Array: \n", x)
Empty array:
 [-4.94065646e-323 0.00000000e+000 2.12199579e-314 0.00000000e+000
 0.00000000e+000]
Zeros Array:
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
Ones Array:
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]

这个empty和我们理解的空稍微有所差别,他是一些及其接近0的数。而zeros则是直接都为0。

数组的索引

  • 数组的索引使⽤⽅式跟list⼀样。可以是正数,负数
一维数组的索引
# ⼀位数组的索引
a1 = np.random.randint(100, size=10)
print('a1=', a1)
# 数组的索引跟list⼀致,分正负数,意义和⽤法都与list⼀致
print("a1[1]=", a1[1])
print("a1[-1]=", a1[-1])
a1={} [55 66 85 75 27 31 18 8 6 73]
a1[1]= 66
a1[-1]= 73
多维数组的索引
# 多维数组需要使⽤逗号隔开,其余使⽤⽅法和list类似
a1 = np.random.randint(100, size=(3,5))
print("a1 = ", a1)
# # 数组的索引跟list⼀致,分正负数,意义和⽤法都与list⼀致
# 得到⼆维数组的某⼀⾏
print("a1[1] = ", a1[1])
print("a1[1] = ", a1[
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值