天天看點

資料分析和機器學習架構底層工具NumPy的資料類型與數組屬性

作者:RPA自動化

如下帶你走進 @ 機器人時代

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 -

最後,文章有幫助到你的話【點贊在看】

激勵我們分享更多的幹貨!

繼續閱讀