1、ndarray 的屬性
(1)ndim 數(shù)組軸(維度)的個數(shù),軸的個數(shù)被稱作秩
(2)shape 數(shù)組的維度, 例如一個2排3列的矩陣,它的shape屬性將是(2,3),這個元組的長度顯然是秩,即維度或者ndim屬性
(3)size 數(shù)組元素的總個數(shù),等于shape屬性中元組元素的乘積。
(4)dtype 一個用來描述數(shù)組中元素類型的對象,可以通過創(chuàng)造或指定dtype使用標(biāo)準(zhǔn)Python類型。不過NumPy提供它自己的數(shù)據(jù)類型。
(5)itemsize 數(shù)組中每個元素的字節(jié)大小。例如,一個元素類型為float64的數(shù)組itemsiz屬性值為8(=64/8),又如,一個元素類型為complex32的數(shù)組item屬性為4(=32/8).
#定義一個2*3*3*2的四維數(shù)組,分別求其緯度、元素個數(shù)、數(shù)據(jù)類型、元素的字節(jié)大小,并改變其形狀
arr=np.array([
? ? [
? ? ? ? [[1,2],[42,51],[75,88]],
? ? ? ? [[11,23],[44,85],[97,80]],
? ? ? ? [[1,2],[4,5],[7,8]]
? ? ],
? ? [
? ? ? ? [[13,25],[47,58],[79,81]],
? ? ? ? [[12,23],[44,55],[76,87]],
? ? ? ? [[19,20],[41,52],[73,84]]
? ? ]
])
# print(arr)
print()
# 數(shù)組的緯度
print(arr.ndim)
print()
# 數(shù)組的大?。?*3*3*2=36
print(arr.size)
print()
# 數(shù)據(jù)類型
print(arr.dtype)
print()
# 每個元素占有的字節(jié)數(shù):4*8=32,是int32類型的,共占4個字節(jié),每個字節(jié)8位,共32位。
print(arr.itemsize)
print()

# shape改變形狀
# 改變其形狀:2*3*3*2=i*j*k*l....如果為-1則讓其自動擴(kuò)展。
# 對于一個已經(jīng)存在的ndarray數(shù)組對象而言,可以通過修改形狀相關(guān)的參數(shù)/方法從而改變數(shù)組的形狀。
#? 直接修改數(shù)組ndarray的shape值, 要求修改后乘積不變。
#? 直接使用reshape函數(shù)創(chuàng)建一個改變尺寸的新數(shù)組,原數(shù)組的shape保持不變,但是新數(shù)組和原數(shù)組共享一個內(nèi)存空間,
# 也就是修改任何一個數(shù)組中的值都會對另外一個產(chǎn)生影響,另外要求新數(shù)組的元素個數(shù)和原數(shù)組一致。
#? 當(dāng)指定某一個軸為-1的時候,表示將根據(jù)數(shù)組元素的數(shù)量自動計算該軸的長度值。
print(arr.reshape(1,1,1,36))
print(arr.reshape(1,2,-1,9))

2、ndarray 數(shù)據(jù)類型
(1)創(chuàng)建numpy數(shù)組的時候可以通過屬性dtype顯示指定數(shù)據(jù)類型,如果不指定的情況下,numpy會自動推斷出適合的數(shù)據(jù)類型, 所以一般不需要顯示給定數(shù)據(jù)類型。
(2)如果需要更改一個已經(jīng)存在的數(shù)組的數(shù)據(jù)類型,可以通過astype方法進(jìn)行修改從而得到一個新數(shù)組。


a=np.array(["python","C語言","java"])
print(a)
a.dtype
a1=np.array(["python","C","java"],dtype='S8')
print(a1.dtype)
