中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
第 81 天:NumPy Ndarray 對(duì)象及數(shù)據(jù)類型

上一篇文章中我們?cè)敿?xì)介紹了 NumPy 的功能及用途,本章節(jié)著重介紹 NumPy 一個(gè)神奇的對(duì)象 Ndarray 以及 NumPy 數(shù)據(jù)類型,包括兩者的用途,接下來(lái)就開(kāi)啟神奇之旅吧。

  • 標(biāo)準(zhǔn)安裝的 Python 中用列表 (list) 保存一組值,它可以用來(lái)當(dāng)作數(shù)組使用,不過(guò)由于列表的元素可以是任何對(duì)象,因此列表中所保存的是對(duì)象的指針。這樣為了保存一個(gè)簡(jiǎn)單的[1,2,3],需要有3個(gè)指針和三個(gè)整數(shù)對(duì)象。對(duì)于數(shù)值運(yùn)算來(lái)說(shuō)這種結(jié)構(gòu)顯然比較浪費(fèi)內(nèi)存和CPU計(jì)算時(shí)間。

  • 此外 Python 還提供了一個(gè)array模塊,array對(duì)象和列表不同,它直接保存數(shù)值,和C語(yǔ)言的一維數(shù)組比較類似。但是由于它不支持多維,也沒(méi)有各種運(yùn)算函數(shù),因此也不適合做數(shù)值運(yùn)算。

  • NumPy 的誕生彌補(bǔ)了這些不足,NumPy提供了兩種基本的對(duì)象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray (下文統(tǒng)一稱之為數(shù)組)是存儲(chǔ)單一數(shù)據(jù)類型的多維數(shù)組,而 ufunc 則是能夠?qū)?shù)組進(jìn)行處理的函數(shù)。

一、NumPy Ndarray 對(duì)象

NumPy 最重要的一個(gè)特點(diǎn)是其 N 維數(shù)組對(duì)象 ndarray,Ndarray 從名字組成上看是 Nd-array,顧名思義就是 N 維數(shù)組的意思,它是一系列多維且同類型數(shù)據(jù)的集合,以 下標(biāo)為 0 開(kāi)始進(jìn)行集合中元素的索引。ndarray 是內(nèi)存存儲(chǔ),換言之 ndarray 對(duì)象由計(jì)算機(jī)內(nèi)存的連續(xù)一部分組成,并結(jié)合索引模式,將每個(gè)元素映射到內(nèi)存塊中的一個(gè)位置,它比列表存儲(chǔ)節(jié)省空間

  • ndarray 對(duì)象是用于存放同類型元素的多維數(shù)組。
  • ndarray 中的每個(gè)元素在內(nèi)存中都有相同存儲(chǔ)大小的區(qū)域。

1、ndarray 內(nèi)部?jī)?nèi)容組成

  • 一個(gè)指向數(shù)據(jù)(內(nèi)存或內(nèi)存映射文件中的一塊數(shù)據(jù))的指針。
  • 數(shù)據(jù)類型或 dtype,描述在數(shù)組中的固定大小值的格子。
  • 一個(gè)表示數(shù)組形狀(shape)的元組,表示各維度大小的元組。
  • 一個(gè)跨度元組(stride),其中的整數(shù)指的是為了前進(jìn)到當(dāng)前維度下一個(gè)元素需要"跨過(guò)"的字節(jié)數(shù)。

2、ndarray 的內(nèi)部結(jié)構(gòu)

ndarray 內(nèi)部結(jié)構(gòu)

3、創(chuàng)建 ndarray

from numpy import *eye(4)Out[3]: array([[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]])

由以上實(shí)例可知,創(chuàng)建一個(gè) ndarray 只需調(diào)用 NumPy 的 array 函數(shù)即可,如下:

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

3.1 參數(shù)說(shuō)明

名稱描述
object數(shù)組或嵌套的數(shù)列
dtype數(shù)組元素的數(shù)據(jù)類型,可選
copy對(duì)象是否需要復(fù)制,可選
order創(chuàng)建數(shù)組的樣式,C為行方向,F(xiàn)為列方向,A為任意方向(默認(rèn))
subok默認(rèn)返回一個(gè)與基類類型一致的數(shù)組
ndmin指定生成數(shù)組的最小維度

值得注意的是:ndmin 默認(rèn)為數(shù)值為 0

3.2 運(yùn)用實(shí)例

創(chuàng)建一個(gè)簡(jiǎn)單的 ndarray 對(duì)象,單維數(shù)組

import numpy as np a = np.array([1,2,3]) print (a)

輸出結(jié)果如下:

[1 2 3]

創(chuàng)建一個(gè)大于 1 維的數(shù)組

import numpy as np a = np.array([[1, 2], [3, 4]]) print (a)

輸出結(jié)果如下:

[[1 2] [3 4]]

使用最小維度參數(shù)指定維度

以下實(shí)例指定數(shù)組維度為 2 維,ndmin 默認(rèn)維度是 0

import numpy as np a = np.array([1, 2, 3,4,5], ndmin = 2) print (a)

輸出結(jié)果為:

[[1, 2, 3, 4, 5]]

使用 dtype 參數(shù)指定數(shù)組元素的數(shù)據(jù)類型

import numpy as np a = np.array([1, 2, 3], dtype = complex) print (a)

輸出結(jié)果:

[1.+0.j 2.+0.j 3.+0.j]

二、NumPy 數(shù)據(jù)類型

NumPy 支持的數(shù)據(jù)類型比 Python 內(nèi)置的類型要更多,基本上可以和 C 語(yǔ)言的數(shù)據(jù)類型對(duì)應(yīng)上,其中部分類型對(duì)應(yīng)為 Python 內(nèi)置的類型。

1、NumPy 常用數(shù)據(jù)類型

下表列舉了 NumPy 常用基本數(shù)據(jù)類型,為了區(qū)別于 Python 原生的數(shù)據(jù)類型,bool、int、float、complex、str 等類型名稱末尾都加了 _。

名稱描述
bool_布爾型數(shù)據(jù)類型(True 或者 False)
int_默認(rèn)的整數(shù)類型(類似于 C 語(yǔ)言中的 long,int32 或 int64)
intc與 C 的 int 類型一樣,一般是 int32 或 int 64
intp用于索引的整數(shù)類型(類似于 C 的 ssize_t,一般情況下仍然是 int32 或 int64)
int8字節(jié)(-128 to 127)
int16整數(shù)(-32768 to 32767)
int32整數(shù)(-2147483648 to 2147483647)
int64整數(shù)(-9223372036854775808 to 9223372036854775807)
uint8無(wú)符號(hào)整數(shù)(0 to 255)
uint16無(wú)符號(hào)整數(shù)(0 to 65535)
uint32無(wú)符號(hào)整數(shù)(0 to 4294967295)
uint64無(wú)符號(hào)整數(shù)(0 to 18446744073709551615)
float_float64 類型的簡(jiǎn)寫
float16半精度浮點(diǎn)數(shù),包括:1 個(gè)符號(hào)位,5 個(gè)指數(shù)位,10 個(gè)尾數(shù)位
float32單精度浮點(diǎn)數(shù),包括:1 個(gè)符號(hào)位,8 個(gè)指數(shù)位,23 個(gè)尾數(shù)位
float64雙精度浮點(diǎn)數(shù),包括:1 個(gè)符號(hào)位,11 個(gè)指數(shù)位,52 個(gè)尾數(shù)位
complex_complex128 類型的簡(jiǎn)寫,即 128 位復(fù)數(shù)
complex64復(fù)數(shù),表示雙 32 位浮點(diǎn)數(shù)(實(shí)數(shù)部分和虛數(shù)部分)
complex128復(fù)數(shù),表示雙 64 位浮點(diǎn)數(shù)(實(shí)數(shù)部分和虛數(shù)部分)

另外 numpy 的數(shù)值類型實(shí)際上是 dtype 對(duì)象的實(shí)例,并對(duì)應(yīng)唯一的字符,包括 np.bool_,np.int32,np.float32,等等。

2、數(shù)據(jù)類型對(duì)象-dtype

數(shù)據(jù)類型對(duì)象是用來(lái)描述與數(shù)組對(duì)應(yīng)的內(nèi)存區(qū)域如何使用,這依賴如下幾個(gè)方面:

  • 數(shù)據(jù)的類型(整數(shù),浮點(diǎn)數(shù)或者 Python 對(duì)象)
  • 數(shù)據(jù)的大?。ɡ?, 整數(shù)使用多少個(gè)字節(jié)存儲(chǔ))
  • 數(shù)據(jù)的字節(jié)順序(小端法或大端法)
  • 在結(jié)構(gòu)化類型的情況下,字段的名稱、每個(gè)字段的數(shù)據(jù)類型和每個(gè)字段所取的內(nèi)存塊的部分
  • 如果數(shù)據(jù)類型是子數(shù)組,它的形狀和數(shù)據(jù)類型

字節(jié)順序是通過(guò)對(duì)數(shù)據(jù)類型預(yù)先設(shè)定"<"或">"來(lái)決定的。"<"意味著小端法(最小值存儲(chǔ)在最小的地址,即低位組放在最前面)。">"意味著大端法(最重要的字節(jié)存儲(chǔ)在最小的地址,即高位組放在最前面)。

dtype 對(duì)象是使用以下語(yǔ)法構(gòu)造的:

numpy.dtype(object, align, copy)
  • object - 要轉(zhuǎn)換為的數(shù)據(jù)類型對(duì)象
  • align - 如果為 true,填充字段使其類似 C 的結(jié)構(gòu)體。
  • copy - 復(fù)制 dtype 對(duì)象 ,如果為 false,則是對(duì)內(nèi)置數(shù)據(jù)類型對(duì)象的引用

實(shí)例操作:

實(shí)例 1

import numpy as np# 使用標(biāo)量類型da = np.array([1, 2, 3])print(da.dtype)

輸出結(jié)果為:

int32

實(shí)例 2

import numpy as np# int8, int16, int32, int64 四種數(shù)據(jù)類型可以使用字符串 'i1', 'i2','i4','i8' 代替dt = np.dtype('i4')print(dt)

輸出結(jié)果為:

int32

3、結(jié)構(gòu)化數(shù)據(jù)類型的運(yùn)用

結(jié)構(gòu)化數(shù)據(jù)類型的使用,類型字段和對(duì)應(yīng)的實(shí)際類型將被創(chuàng)建

實(shí)例1:創(chuàng)建年齡數(shù)組并且應(yīng)用于 ndarray 對(duì)象

1)創(chuàng)建一個(gè)結(jié)構(gòu)化數(shù)據(jù)類型
da = np.dtype(np.int64)print(da)
# 創(chuàng)建dt = np.dtype([('age',np.int8)])print(dt)

輸出結(jié)果為:

int64[('age', 'i1')]
2)將結(jié)構(gòu)化數(shù)據(jù)類型應(yīng)用于ndarray 對(duì)象
dt = np.dtype([('age',np.int8)]) a = np.array([(10,),(20,),(30,)], dtype = dt) print(a)

輸出結(jié)果為:

[(10,) (20,) (30,)]
3) 類型字段名可以用于存取實(shí)際的 age 列
dt = np.dtype([('age',np.int8)]) a = np.array([(10,),(20,),(30,)], dtype = dt) print(a['age'])

輸出結(jié)果為:

[10 20 30]

實(shí)例2:定義一個(gè)結(jié)構(gòu)化數(shù)據(jù)類型 student,包含字符串字段 name,整數(shù)字段 age,及浮點(diǎn)字段 marks,并將這個(gè) dtype 應(yīng)用到 ndarray 對(duì)象。

1) 創(chuàng)建數(shù)組
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) print(student)

輸出結(jié)果:

[('name', 'S20'), ('age', 'i1'), ('marks', '<f4')]
2) 將數(shù)組應(yīng)用與 ndarray 對(duì)象
import numpy as npstudent = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) a = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = student) print(a)

輸出結(jié)果為:

[(b'abc', 21, 50.) (b'xyz', 18, 75.)]

3.1 內(nèi)建類型的字符代碼如下:

字符對(duì)應(yīng)類型
b布爾型
i(有符號(hào)) 整型
u無(wú)符號(hào)整型 integer
f浮點(diǎn)型
c復(fù)數(shù)浮點(diǎn)型
mtimedelta(時(shí)間間隔)
Mdatetime(日期時(shí)間)
O(Python) 對(duì)象
S, a(byte-)字符串
UUnicode
V原始數(shù)據(jù) (void)

3.2 NumPy 數(shù)據(jù)類型轉(zhuǎn)換

numpy 數(shù)據(jù)類型轉(zhuǎn)換需要調(diào)用方法 astype(),不能直接修改 dtype。調(diào)用 astype 返回?cái)?shù)據(jù)類型修改后的數(shù)據(jù),但是源數(shù)據(jù)的類型不會(huì)變,需要進(jìn)一步對(duì)源數(shù)據(jù)的賦值操作才能改變。

實(shí)例:

da = np.array([1.2,1.1,1.0])# 輸出 da 的數(shù)據(jù)類型print(da.dtype)# 輸出 float64
# 轉(zhuǎn)換 da 的數(shù)據(jù)類型print(da.astype(np.int32))# 輸出 [1 1 1]
# 重新查看數(shù)據(jù)類型,發(fā)現(xiàn)數(shù)據(jù)類型還未改變print(da.dtype)# 輸出 float64
# 重新進(jìn)行賦值操作da = da.astype(np.int32)print(da.dtype) # 輸出int32
print(da)# 輸出 [1 1 1]

4、復(fù)數(shù)

我們把形如 z=a+bi(a, b均為實(shí)數(shù))的數(shù)稱為復(fù)數(shù),其中 a 稱為實(shí)部,b 稱為虛部,i 稱為虛數(shù)單位。

當(dāng)虛部 b=0  時(shí),復(fù)數(shù) z 是實(shí)數(shù);
當(dāng)虛部 b!=0  時(shí),復(fù)數(shù) z 是虛數(shù);
當(dāng)虛部 b!=0 ,且實(shí)部 a=0 時(shí),復(fù)數(shù) z 是純虛數(shù)。

實(shí)例:

import numpy as np a = np.array([1, 2, 3], dtype = complex) print (a)

輸出:

[1.+0.j 2.+0.j 3.+0.j]

如上輸出結(jié)果就是復(fù)數(shù)形式的數(shù)據(jù)類型

總結(jié)

本章節(jié)是對(duì) NumPy Ndarray 對(duì)象及 NumPy 數(shù)據(jù)類型的用法作詳細(xì)介紹,本文介紹的是 Ndarray 基礎(chǔ)知識(shí),等把 NumPy 所有知識(shí)點(diǎn)介紹完后會(huì)出一些項(xiàng)目實(shí)戰(zhàn),更好的給運(yùn)用 NumPy 相關(guān)知識(shí)點(diǎn)的工程師提供支撐。

參考

https://www.runoob.com/numpy/numpy-ndarray-object.html https://www.runoob.com/numpy/numpy-dtype.html

文中示例代碼:python-100-days

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
numpy庫(kù)入門
Python科學(xué)計(jì)算工具
NumPy基礎(chǔ)教程(二)
python numpy庫(kù)介紹
NumPy Ndarray 對(duì)象 | 菜鳥(niǎo)教程
Python:Numpy庫(kù)基礎(chǔ)分析——詳解datetime類型的處理
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服