专业编程基础技术教程

网站首页 > 基础教程 正文

数据分析和机器学习框架底层工具NumPy的数据类型与数组属性

ccvgpt 2024-10-12 13:28:44 基础教程 8 ℃

如下带你走进 @ 机器人时代

Discover 点击上面蓝色文字关注我们

数据分析和机器学习框架底层工具NumPy的数据类型与数组属性


NumPy
中数组类型比较多:

1、布尔型:bool_:标识码:b

import numpy as np
a= np.dtype(np.bool_)
print(a) 
输出结果:
bool

2、int系列:

int_:默认整数类型,类似于 C 语言中的 long,取值为 int32 或 int64,
intc:和 C 语言的 int 类型一样,一般是 int32 或 int 64
intp:用于索引的整数类型(类似于 C 的 ssize_t,通常为 int32 或 int64)
int8:代表与1字节相同的8位整数。值的范围是-128到127。
int16:代表 2 字节(16位)的整数。范围是-32768至32767
int32:代表 4 字节(32位)整数。范围是-2147483648至2147483647。
int64:表示 8 字节(64位)整数。范围是-9223372036854775808至9223372036854775807。。
uint8:代表1字节(8位)无符号整数。
uint16:2 字节(16位)无符号整数。
uint32:4 字节(32位)的无符号整数。
uint64:8 字节(64位)的无符号整数。

import numpy as np
# int8, int16, int32, int64 四种数据类型
# 可以使用字符串 'i1', 'i2','i4','i8' 代替
dt = np.dtype('i8')
print(dt)
# 字节顺序标注
dt = np.dtype('<i4')
print(dt)
dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(30,)], dtype = dt)
print(a)
dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(80,)], dtype = dt)
print(a['age'])
s = np.dtype([('名字','S20'), ('年龄', 'i1'), ('成绩', 'u4')])
print(s)
t = np.dtype([('姓名','U10'), ('年龄', 'i1'), ('成绩', 'f4')])
a = np.array([('张三', 21, 50),('李四', 18, 75)], dtype = t)
print(a)
输出结果:
int64
int32
[(10,) (20,) (30,)]
[10 20 80]
[('名字', 'S20'), ('年龄', 'i1'), ('成绩', '<u4')]
[('张三', 21, 50.) ('李四', 18, 75.)]


3、float系列:

float_:float64 类型的简写。
float16:半精度浮点数,包括:1 个符号位,5 个指数位,10个尾数位。
float32:单精度浮点数,包括:1 个符号位,8 个指数位,23个尾数位
float64:双精度浮点数,包括:1 个符号位,11 个指数位,52个尾数位。

4、浮点类型:

complex_:
复数类型,与 complex128 类型相同。
complex64:表示实部和虚部共享 32 位的复数。
complex128:表示实部和虚部共享 64 位的复数。

5、字符类型:

str_:
表示字符串类型
string_:表示字节串类型

在使用中,我们需要了解各种数据类型的标识码:
b 代表布尔型
i 带符号整型
u 无符号整型
f 浮点型
c 复数浮点型
m 时间间隔(timedelta)
M datatime(日期时间)
O Python对象
S,a 字节串(S)与字符串(a)
U Unicode
如:10个字节的中文U10
V 原始数据(void)

下面我们来看看数组的属性

NumPy 数组的维数称为秩(rank),秩(zhi)就是轴的数量,即数组的维度。在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。可以声明 axis。如:axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作;axis=1,表示沿着第1轴进行操作,即对每一行进行操作。

我们通过实例看看数组的一些属性:

#数组属性
a = np.arange(24)
print (a.ndim)
# a 现只有一个维度
# 现在调整其大小
b = a.reshape(2,4,3)
# b 现在拥有三个维度
print (b.ndim)
#调整数组形状
a = np.array([[1,2,3],[4,5,6]])
b = a.reshape(3,2)
print(b)
#返回数组的维度
a = np.array([[1,2,3],[4,5,6]])
print (a.shape)
#调整数组的大小
a = np.array([[1,2,3],[4,5,6]])
a.shape =  (3,2)
print (a)
#返回数组中每个元素的大小
#数据类型为int8,代表1字节
#数据类型为int64,代表8字节
x = np.array([1,2,3,4,5], dtype = np.int64)
print (x.itemsize)
#返回 ndarray 数组的内存信息
x = np.array([1,2,3,4,5])
print (x.flags)

输出结果:
1
3
[[1 2]
 [3 4]
 [5 6]]
(2, 3)
[[1 2]
 [3 4]
 [5 6]]
8
  C_CONTIGUOUS : True
  F_CONTIGUOUS : True
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False


值得注意的是:
ndarray.reshape 通常返回的是非拷贝副本,即改变返回后数组的元素,原数组对应元素的值也会改变。

坚持学习,这样每天都能进步一点点!

往期回顾:

  • 来来来,送你一个金牌销售机器人,7X24小时不休,不要工资免费用!
  • RPA技术在旅行社销售业务中如何凤凰涅槃??
  • 【工资翻三倍】系列:一招搞定九宫图片切割机器人,让你的朋友圈更加炫酷!


本文引用和摘录相关内容,请联系侵删。

- END -


最后,文章有帮助到你的话点赞在看
励我们分享更多的干货!

最近发表
标签列表