数据类型对象(numpy.dtype 类的实例)用来描述与数组对应的内存区域是如何使用,它描述了数据的以下几个方面:
这个numpy.dtype是与numpy.array()中的dtype对象结合在一起使用的。
numpy.dtype() 相当于C/C++语言中的结构体中的属性,并且可以设置每个属性的大小范围,是否对齐等等。之后,把这个结构体的模板放在array数组的dtype上面,使得在给array赋值的时候,是按照numpy.dtype()中的格式来保存的。
其次,必须要保证输入的元素与numpy.dtype()中的数据属性的个数和大小范围对应,否则会出现数据不完整。(若数据长度超过了numpy.dtype中设置的长度,则会发生截断)。
如果您还不是很明白,请看我下面举的例子
这里我们要求一个student的数据结构,包含姓名(string),性别(string),年龄(int),学号(string)四个属性,分别使用C/C++和numpy.dtype来保存和输出2名学生的各种信息。
(‘Alice’,‘女’,‘18’,‘20241016’)
(‘Bob’,‘男’,‘20’,‘20241017’)
// 关于C/C++中结构体的使用与Python数据分析中numpy.dtype的对比
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;
// 注意看,结构体是重点,类比于numpy.dtype
struct Student{
string name; // 姓名
string gender; // 性别
int age; // 年龄
string ID; // 学号
};
int main() {
Student arr[5];
// 设置Alice的信息,并存储到数组arr中
arr[1].name = "Alice";
arr[1].gender = "女";
arr[1].age = 18;
arr[1].ID = "20241016";
// 设置Bob的信息,并存储到数组arr中
arr[2].name = "Bob";
arr[2].gender = "男";
arr[2].age = 20;
arr[2].ID = "20241017";
// 使用for循环输出这两个学生的信息
for (int i = 1; i <= 2; i++) {
cout << arr[i].name << " " << arr[i].gender << " " << arr[i].age << " " << arr[i].ID << endl;
}
return 0;
}
# 讲解numpy.dtype的使用
import numpy as np
# 注意,这里是不是就类比于C/C++中的结构体的信息了。
norm_dtype=np.dtype([("name",'U10'),("gender","U10"),("age",int),("ID",'U10')])
#("name",'U10') 中的U10,是表明name是字符串数据类型,长度为10
# 下面开始根据自定义的数据类型创建相应的数组。
arr=np.array([[("Alice","女",18,"20241016")],[("Bob",'男',20,'20241017')]],dtype=norm_dtype)
# 注意看 dtype=norm_dtype 这就告诉了我们,要根据这个形式来输入元素
print(arr[0]) #[('Alice', '女', 18, '20241016')]
print(arr[1]) #[('Bob', '男', 20, '20241017')]
# 同样,我还用根据相应的数据属性名称来访问相应的值
print(arr[0]['age']) # 18
到这里,大家应该可以很清楚的认识到,Python中numpy.dtype的使用与C/C++中结构体的使用是类似的。
因篇幅问题不能全部显示,请点此查看更多更全内容