? 數(shù)據(jù)類型對象(numpy.dtype 類的實例)用來描述與數(shù)組對應的內(nèi)存區(qū)域是如何使用,它描述了數(shù)據(jù)的以下幾個方面:
? 這個numpy.dtype是與numpy.array()中的dtype對象結(jié)合在一起使用的。
? numpy.dtype() 相當于C/C++語言中的結(jié)構(gòu)體中的屬性,并且可以設(shè)置每個屬性的大小范圍,是否對齊等等。之后,把這個結(jié)構(gòu)體的模板放在array數(shù)組的dtype上面,使得在給array賦值的時候,是按照numpy.dtype()中的格式來保存的。
? 其次,必須要保證輸入的元素與numpy.dtype()中的數(shù)據(jù)屬性的個數(shù)和大小范圍對應,否則會出現(xiàn)數(shù)據(jù)不完整。(若數(shù)據(jù)長度超過了numpy.dtype中設(shè)置的長度,則會發(fā)生截斷)。
如果您還不是很明白,請看我下面舉的例子
? 這里我們要求一個student的數(shù)據(jù)結(jié)構(gòu),包含姓名(string),性別(string),年齡(int),學號(string)四個屬性,分別使用C/C++和numpy.dtype來保存和輸出2名學生的各種信息。
(‘Alice’,‘女’,‘18’,‘20241016’)
(‘Bob’,‘男’,‘20’,‘20241017’)
// 關(guān)于C/C++中結(jié)構(gòu)體的使用與Python數(shù)據(jù)分析中numpy.dtype的對比
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;
// 注意看,結(jié)構(gòu)體是重點,類比于numpy.dtype
struct Student{
string name; // 姓名
string gender; // 性別
int age; // 年齡
string ID; // 學號
};
int main() {
Student arr[5];
// 設(shè)置Alice的信息,并存儲到數(shù)組arr中
arr[1].name = "Alice";
arr[1].gender = "女";
arr[1].age = 18;
arr[1].ID = "20241016";
// 設(shè)置Bob的信息,并存儲到數(shù)組arr中
arr[2].name = "Bob";
arr[2].gender = "男";
arr[2].age = 20;
arr[2].ID = "20241017";
// 使用for循環(huán)輸出這兩個學生的信息
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++中的結(jié)構(gòu)體的信息了。
norm_dtype=np.dtype([("name",'U10'),("gender","U10"),("age",int),("ID",'U10')])
#("name",'U10') 中的U10,是表明name是字符串數(shù)據(jù)類型,長度為10
# 下面開始根據(jù)自定義的數(shù)據(jù)類型創(chuàng)建相應的數(shù)組。
arr=np.array([[("Alice","女",18,"20241016")],[("Bob",'男',20,'20241017')]],dtype=norm_dtype)
# 注意看 dtype=norm_dtype 這就告訴了我們,要根據(jù)這個形式來輸入元素
print(arr[0]) #[('Alice', '女', 18, '20241016')]
print(arr[1]) #[('Bob', '男', 20, '20241017')]
# 同樣,我還用根據(jù)相應的數(shù)據(jù)屬性名稱來訪問相應的值
print(arr[0]['age']) # 18
到這里,大家應該可以很清楚的認識到,Python中numpy.dtype的使用與C/C++中結(jié)構(gòu)體的使用是類似的。
因篇幅問題不能全部顯示,請點此查看更多更全內(nèi)容
Copyright ? 2019- 91gzw.com 版權(quán)所有 湘ICP備2023023988號-2
違法及侵權(quán)請聯(lián)系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市萬商天勤律師事務所王興未律師提供法律服務