Numpy學習05 陣列的屬性

2021-10-25 02:03:55 字數 4729 閱讀 9868

2.ndarray.shape

3.ndarray.size

4.ndarray.dtype

5.ndarray.itemsize

6.ndarray.flags

7.ndarray.real和ndarray.imag

8.ndarray.data

注:為了節約行數,預設import numpy as np已經寫在每段**前,不再重複寫入,如果有新的包引入,會在**頭部import

在學過陣列的建立之後,需要對陣列進行進一步的了解,可以先從陣列屬性入手,numpy中比較重要的陣列屬性如下:

屬性說明

ndarray.ndim

秩,即軸的數量或維度的數量

ndarray.shape

陣列的維度,對於矩陣,n 行 m 列

ndarray.size

陣列元素的總個數,相當於 .shape 中 n*m 的值

ndarray.dtype

ndarray 物件的元素型別

ndarray.itemsize

ndarray 物件中每個元素的大小,以位元組為單位

ndarray.flags

ndarray 物件的記憶體資訊

ndarray.real

ndarray 元素的實部(複數的實部)

ndarray.imag

ndarray 元素的虛部(複數的虛部)

ndarray.data

包含實際陣列元素的緩衝區,由於一般通過陣列的索引獲取元素,所以通常不需要使用這個屬性。

接下來讓我們分別介紹。

numpy 陣列的維度(又稱維數)稱為秩(rank),一維陣列的秩為 1,二維陣列的秩為 2,以此類推。

numpy 中,每乙個線性的陣列稱為是乙個軸(axis),也就是維度(dimensions)。

>>

>a = np.arange(18)

>>

>

print

(a)>>

>

print

(a.ndim)[0

1234

5678

9101112

1314

151617]

1>>

>b = a.reshape(2,

3,3)

>>

>

print

(b)>>

>

print

(b.ndim)[[

[012

][34

5][6

78]]

[[910

11][12

1314][

151617]

]]3>>

>

print

(a)[01

2345

6789

1011

1213

1415

1617

]

我們首先建立了乙個1維numpy陣列a,陣列元素有18個,通過ndarray.ndim屬性可以檢視陣列a的維數是1。然後通過reshape方法生成陣列b(注:此時陣列a不被改變),然後列印陣列b的維數為3。

>>

>a =

[x+1

for x in

range(3

)]>>

>b =

[x+3

for x in a]

>>

>c = np.array(

[a]+

[b])

>>

>

print

(c.shape,

type

(c.shape))(

2,3)

<

class

'tuple'

>

#採用reshape方式

>>

>d = c.reshape(3,

2)>>

>

print

(d,d.shape,

type

(d))[[

12][

34][

56]]

<

class

'numpy.ndarray'

>

#直接改shape

>>

>c.shape =(3

,2)>>

>

print

(c,d.shape,

type

(c))[[

12][

34][

56]]

<

class

'numpy.ndarray'

>

可以看到shape屬性可以返回陣列的維度,在上述案例中,shape返回的是乙個元組tuple。我們可以通過直接設定shape或者reshape改變乙個陣列的shape,請注意後者不直接改變原陣列,而是生成乙個新陣列,如c生成了d,但是c本身沒有變化,直到我們通過c.shape = (3,2)改變了它。

>>

>a =

[x+1

for x in

range(3

)]>>

>b =

[x+3

for x in a]

>>

>

def getsize(data)

:>>

>

return np.array(data)

.size

>>

>

print

(getsize(a)

,getsize(b)

,getsize(

[a]+

[b]))3

36

這裡我們新建乙個getsize函式,用來利用list新建ndarray陣列並且返回其size。

>>

>x = np.arange(

5, dtype = np.int8)

>>

>

print

(x.dtype)

int8

>>

>y = np.array(

5, dtype = np.int16)

>>

>

print

(y.dtype)

int16

這個在前面的資料型別裡面有介紹,不加贅述。

>>

>x = np.arange(

5, dtype = np.int8)

>>

>

print

(x.itemsize)

1>>

>y = np.array(

5, dtype = np.float64)

>>

>

print

(y.itemsize)

8

可以看到int8型陣列元素大小為1位元組,float64型陣列元素大小為8位元組。

屬性描述

資料是在乙個單一的c風格的連續段中

f_contiguous (f)

資料是在乙個單一的fortran風格的連續段中

owndata (o)

陣列擁有它所使用的記憶體或從另乙個物件中借用它

writeable (w)

資料區域可以被寫入,將該值設定為 false,則資料為唯讀

aligned (a)

資料和所有元素都適當地對齊到硬體上

updateifcopy (u)

這個陣列是其它陣列的乙個副本,當這個陣列被釋放時,原陣列的內容將被更新

>>

>x = np.arange(

5, dtype = np.int8)

>>

>

print

(x.flags)

c_contiguous :

true

f_contiguous :

true

owndata :

true

writeable :

true

aligned :

true

writebackifcopy :

false

updateifcopy :

false

這裡比較重要的是flags.owndata屬性,它表示該陣列是否擁有資料,會配合後面的深淺複製使用。

>>

>x = np.sqrt([1

+0j,2

+1j])

>>

>

print

(x.real)

>>

>

print

(x.imag)[1

.1.45534669][

0.0.34356075

]

np.sqrt是numpy提供的求平方根的方法,運算後我們利用real和imag提取的實部和虛部

>>

>x = np.arange(

5, dtype = np.int8)

>>

>

print

(x.data)

>

由於一般通過陣列的索引獲取元素,所以通常不需要使用這個屬性。

NumPy 陣列屬性

我們將討論 numpy 的多種陣列屬性。這一陣列屬性返回乙個包含陣列維度的元組,它也可以用於調整陣列大小。示例 1 import numpy as np a np.array 1,2,3 4,5,6 print a.shape 輸出如下 2,3 示例 2 這會調整陣列大小 import numpy ...

NumPy 陣列屬性

摘自菜鳥教程 本章節我們將來了解 numpy 陣列的一些基本屬性。numpy 陣列的維數稱為秩 rank 一維陣列的秩為 1,二維陣列的秩為 2,以此類推。在 numpy中,每乙個線性的陣列稱為是乙個軸 axis 也就是維度 dimensions 比如說,二維陣列相當於是兩個一維陣列,其中第乙個一維...

NumPy陣列屬性

目錄屬性 說明ndarray.ndim 秩,即軸的數量或維度的數量 ndarray.shape 陣列的維度,對於矩陣,n 行 m 列 ndarray.size 陣列元素的總個數,相當於 shape 中 n m 的值 ndarray.dtype ndarray 物件的元素型別 ndarray.item...