溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

numpy_ndarry的創(chuàng)建及數(shù)據(jù)類型

發(fā)布時間:2020-07-29 08:28:49 來源:網(wǎng)絡(luò) 閱讀:252 作者:Tobey_51 欄目:大數(shù)據(jù)

ndarray 多維數(shù)組(N Dimension Array)

NumPy數(shù)組是一個多維的數(shù)組對象(矩陣),稱為ndarray,具有矢量算數(shù)運算能力和復(fù)雜的廣播能力,并具有執(zhí)行速度快和節(jié)省空間的特點

注意:ndarray的下標從0開始,且數(shù)組里的所有元素必須是相同類型

ndarray擁有的屬性

1.ndim屬性:維度個數(shù)

2.shape屬性:緯度大小

3.dtype屬性:數(shù)據(jù)類型

ndarray的隨機創(chuàng)建

通過隨機抽樣(numpy.random)生成隨機數(shù)據(jù)

示例代碼:

# 導(dǎo)入numpy, 別名np
imort numpy as np

# 生成指定維度大?。?行4列)的隨機多維浮點型數(shù)據(jù)(二維),rand固定區(qū)間0.0 ~ 1.0
arr = np.random.rand(3, 4)
print(arr)
print(type(arr))

# 生成指定維度大?。?行4列)的隨機多維整型數(shù)據(jù)(二維),randint()可以指定區(qū)間(-1 ~ 5)
arr = np.random.randint(-1, 5, size = (3, 4)) # 'size='可省略
print(arr)
print(type(arr))

# 生成指定維度大?。?行4列)的隨機多維浮點型數(shù)據(jù)(二維),uniform()可以指定區(qū)間(-1 ~ 5)
arr = np.random.uniform(-1, 5, size = (3, 4)) # 'size='可省略
print(arr)
print(type(arr))

print('維度個數(shù): ', arr.ndim)
print('維度大小: ', arr.shape)
print('數(shù)據(jù)類型: ', arr.dtype)

運行結(jié)果:

[[ 0.09371338  0.06273976  0.22748452  0.49557778]
 [ 0.30840042  0.35659161  0.54995724  0.018144  ]
 [ 0.94551493  0.70916088  0.58877255  0.90435672]]
<class 'numpy.ndarray'>

[[ 1  3  0  1]
 [ 1  4  4  3]
 [ 2  0 -1 -1]]
<class 'numpy.ndarray'>

[[ 2.25275308  1.67484038 -0.03161878 -0.44635706]
 [ 1.35459097  1.66294159  2.47419548 -0.51144655]
 [ 1.43987571  4.71505054  4.33634358  2.48202309]]
<class 'numpy.ndarray'>

維度個數(shù):  2
維度大小:  (3, 4)
數(shù)據(jù)類型:  float64

ndarray的序列創(chuàng)建

  1. np.array(collection)

collection 為序列型對象(list)、嵌套序列對象(list of list)。

示例代碼:

# list序列轉(zhuǎn)換為ndarray
lis = range(10)
arr = np.array(lis)

print(arr)      # ndarray數(shù)據(jù)
print(arr.ndim)     # 維度個數(shù)
print(arr.shape)        # 維度大小

# list of list嵌套序列轉(zhuǎn)換為ndarray
lis_lis = [range(10), rarnge(10)]
arr = np.array(lis_lis)

print(arr)      # ndarray數(shù)據(jù)
print(arr.ndim)     # 維度個數(shù)
print(arr.shape)        # 維度大小

運行結(jié)果:

# list序列轉(zhuǎn)換為 ndarray
[0 1 2 3 4 5 6 7 8 9]
1
(10,)

# list of list嵌套序列轉(zhuǎn)換為 ndarray
[[0 1 2 3 4 5 6 7 8 9]
 [0 1 2 3 4 5 6 7 8 9]]
2
(2, 10)
  1. np.zeros()

指定大小的全0數(shù)組。注意:第一個參數(shù)是元組,用來指定大小,如(3,4)。

  1. np.ones()

指定大小的全1數(shù)組。注意:第一個參數(shù)是元組,用來指定大小,如(3,4)。

  1. np.empty()

初始化數(shù)組,不是總是返回全0,有時返回的是未初始的隨機值(內(nèi)存里的隨機值)。

示例代碼(2,3,4):

# np.zeros
zeros_arr = np.zeros((3, 4))

# np.ones
ones_arr = np.ones((2, 3))

# np.empty
empty_arr = np.empty((3, 3))

# np.empty 指定數(shù)據(jù)類型
empty_int_arr = np.empty((3, 3), int)

print('------zeros_arr------`)
print(zeros_arr)

print('\n------ones_arr------`)
print(ones_arr)

print('\n------empty_arr------`)
print(empty_arr)

print('\n------empty_int_arr------`)
print(empty_int_arr)

運行結(jié)果:

------zeros_arr-------
[[ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]]

------ones_arr-------
[[ 1.  1.  1.]
 [ 1.  1.  1.]]

------empty_arr-------
[[ 0.  0.  0.]
 [ 0.  0.  0.]
 [ 0.  0.  0.]]

------empty_int_arr-------
[[0 0 0]
 [0 0 0]
 [0 0 0]]
  1. np.arrange()和reshape()

    arange()類似python的range(), 創(chuàng)建一個一維ndarray數(shù)組。
    reshape()將重新調(diào)整數(shù)組的維數(shù)

示例代碼(5):

# np.arange()
arr = np.arange(15) # 15個元素的一維數(shù)組
print(arr)
print(arr.reshape(3, 5))    # 3*5個元素的二維數(shù)組
print(arr.reshape(1, 3, 5)) # 1*3*5個元素的三維數(shù)組

運行結(jié)果:

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]

[[[ 0  1  2  3  4]
  [ 5  6  7  8  9]
  [10 11 12 13 14]]]
  1. np.arange()和random.shuffle()

    random.shuffle()將打亂數(shù)組序列(類似于洗牌)

示例代碼(6):

arr = np.arange(15)
print(arr)

np.random.shuffle(arr)
print(arr)
print(arr.reshape(3, 5))

運行結(jié)果:

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]

[ 5  8  1  7  4  0 12  9 11  2 13 14 10  3  6]

[[ 5  8  1  7  4]
 [ 0 12  9 11  2]
 [13 14 10  3  6]]

ndarray的數(shù)據(jù)類型

  1. dtype參數(shù)

    指定數(shù)組的數(shù)據(jù)類型,類型名+位數(shù),如float64, int32

  2. astype方法

    轉(zhuǎn)換數(shù)組的數(shù)據(jù)類型

示例代碼(1、2):

# 初始化3行4列數(shù)組,數(shù)據(jù)類型為float64
zeros_float_arr = np.zeros((3,4), dtype = np.float64)
print(zeros_float_arr)
print(zeros_float_arr.dtype)

# astype轉(zhuǎn)換數(shù)據(jù)類型,將已有的數(shù)組的數(shù)據(jù)類型轉(zhuǎn)換為int32
zeros_int_arr = zeros_float_arr.astype =(np. int32)
print(zeros_int_arr)
print(zeros_int_arr.dtype)

運行結(jié)果:

[[ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]]
float64

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
int32
向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI