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...