日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NumPy之:标量scalars

發(fā)布時間:2024/2/28 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NumPy之:标量scalars 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 簡介
  • scalar類型的層次結(jié)構(gòu)
  • 內(nèi)置Scalar類型
    • boolean
    • Integers
    • Unsigned integers
    • Floating-point numbers
    • Complex floating-point numbers
    • Python 對象
    • 可變長度數(shù)據(jù)類型

簡介

Python語言中只定義了特定數(shù)據(jù)類的一種類型(比如只有一種整數(shù)類型,一種浮點(diǎn)類型等)。在不需要關(guān)注計算機(jī)中數(shù)據(jù)表示方式的普通應(yīng)用程序中,這樣做很方便。但是,對于科學(xué)計算來說,我們需要更加精確的控制類型。

在NumPy中,引入了24種新的Python scalar類型用于更加準(zhǔn)確的描述數(shù)據(jù)。這些類型都是可以直接在NumPy中的數(shù)組中使用的,所以也叫Array scalar類型。

本文將會詳細(xì)講解這24種scalar類型。

scalar類型的層次結(jié)構(gòu)

先看一個張圖,看下scalar類型的層次結(jié)構(gòu):

上面實(shí)線方框括起來的,就是scalar類型。 這些標(biāo)量類型,都可以通過 np.type來訪問,比如:

In [130]: np.intc Out[130]: numpy.int32

細(xì)心的小伙伴可能要問了,這不對呀,實(shí)線方框括起來的只有22中類型,還有兩個類型是什么?

還有兩個是代表整數(shù)指針的 intp 和 uintp 。

注意,array scalars 類型是不可變的。

我們可以isinstance來對這些數(shù)組標(biāo)量來進(jìn)行層次結(jié)構(gòu)的檢測。

例如,如果val是數(shù)組標(biāo)量對象,則isinstance(val,np.generic)將返回True。如果val是復(fù)數(shù)值類型,則isinstance(val,np.complexfloating)將返回True。

內(nèi)置Scalar類型

我們用下面的表來展示內(nèi)置的Scalar類型和與他們相對應(yīng)的C類型或者Python類型。最后一列的字符代碼是類型的字符表示,在有些情況比如構(gòu)建dtype中會使用到。

boolean

類型描述字符代碼
bool_compatible: Python bool'?'
bool88 bits

Integers

類型描述字符代碼
bytecompatible: C char'b'
shortcompatible: C short'h'
intccompatible: C int'i'
int_compatible: Python int'l'
longlongcompatible: C long long'q'
intplarge enough to fit a pointer'p'
int88 bits
int1616 bits
int3232 bits
int6464 bits

Unsigned integers

類型描述字符代碼
ubytecompatible: C unsigned char'B'
ushortcompatible: C unsigned short'H'
uintccompatible: C unsigned int'I'
uintcompatible: Python int'L'
ulonglongcompatible: C long long'Q'
uintplarge enough to fit a pointer'P'
uint88 bits
uint1616 bits
uint3232 bits
uint6464 bits

Floating-point numbers

類型描述字符代碼
half'e'
singlecompatible: C float'f'
doublecompatible: C double
float_compatible: Python float'd'
longfloatcompatible: C long float'g'
float1616 bits
float3232 bits
float6464 bits
float9696 bits, platform?
float128128 bits, platform?

Complex floating-point numbers

類型描述字符代碼
csingle'F'
complex_compatible: Python complex'D'
clongfloat'G'
complex64two 32-bit floats
complex128two 64-bit floats
complex192two 96-bit floats, platform?
complex256two 128-bit floats, platform?

Python 對象

類型描述字符代碼
object_any Python object'O'

對于數(shù)組中的對象類型object_來說,存儲的數(shù)據(jù)其實(shí)是Python對象的引用,所以說他們的對象類型必須一致。

雖然存儲的是引用,但是在取值訪問的時候,返回的就是對象本身。

可以看到對于數(shù)字類型來說,int,uint,float,complex,后面可以跟上具體的數(shù)組,表示特定的長度。

intpuintp 是兩個指向整數(shù)的指針。

有些類型和Python自帶的類型基本上是等價的,事實(shí)上這些類型就是繼承自Python自帶的類型:

Array scalar typeRelated Python type
int_IntType (Python 2 only)
float_FloatType
complex_ComplexType
bytes_BytesType
unicode_UnicodeType

有一個特例就是bool_ ,它和Python的 BooleanType 非常類似,但并不是繼承自BooleanType。因?yàn)镻ython的BooleanType 是不允許被繼承的。并且兩者底層的數(shù)據(jù)存儲長度也是不一樣的。

雖然在Python中bool是int的子類。但是在NumPy中 bool_ 并不是 int_ 的子類,bool_ 甚至不是一個number 類型。

在Python 3 中, int_ 不再繼承 Python3 中的int了,因?yàn)閕nt不再是一個固定長度的整數(shù)。

NumPy 默認(rèn)的數(shù)據(jù)類型是 float_

可變長度數(shù)據(jù)類型

下面的三種數(shù)據(jù)類型長度是可變的,

類型描述字符代碼
bytes_compatible: Python bytes'S#'
unicode_compatible: Python unicode/str'U#'
void'V#'

字符代碼中的 # 表示的是數(shù)字。

上面描述的字符代碼,為了和Python的其他模塊進(jìn)行兼容,比如struct ,需要進(jìn)行下面適當(dāng)?shù)男拚?#xff1a;

c -> S1, b -> B, 1 -> b, s -> h, w -> H, 和 u -> I.


本文已收錄于 http://www.flydean.com/03-python-numpy-scalar/

最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發(fā)現(xiàn)!

歡迎關(guān)注我的公眾號:「程序那些事」,懂技術(shù),更懂你!

超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的NumPy之:标量scalars的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。