1. 程式人生 > >Numpy 函式(1)

Numpy 函式(1)

import numpy as np
一維陣列
arr1 = np.array([1,2,3,4])

二維陣列
arr2 = np.array([[1,2,3],[4,5,6]])

arr2.shape:陣列結構
arr2.size:陣列元素個數
arr2.dtype:陣列元素型別
arr2.ndim:陣列維度
重置陣列型別:
arr2.shape = 3,2

numpy中自動生成陣列的函式:
(1)arange(起始值,終止值,步長)
print(np.arange(0,10,1))

(2)生成等差數列:linspace(起始值,終止值,元素個數)
print(np.linspace(1,12,12))

(3)生成等比數列:logspace(10^a , 10 ^b,元素個數)
print(np.logspace(0,1,20))

(4)全0陣列:
print(np.zeros((2,3)))

(5)全1陣列:
print(np.ones((2,3)))

(6)單位陣列:自定義的單位矩陣
print(np.eye(4))

(7)對角陣列:diag 輸入對角線的值,用陣列形式
print(np.diag([1,2,3,4]))

生成隨機數
random

(1)np.random.random 陣列形式的隨機數 範圍在0-1之間
print(np.random.random(100))

(2)均勻分佈:np.random.rand
print(np.random.rand(10,5))

(3)標準正態分佈:np.random.randn
print(np.random.randn(10,5))

(4)隨機整數:np.random.randint
print(np.random.randint(1,10,size=[2,5]))

陣列索引
一維陣列索引:類似於列表切片
arr = np.arange(10)
print(arr[2:6])
arr[3]=22 修改陣列值
print(arr[0:9])
print(arr[0::2])

二維陣列索引:
方法一:
arr= np.array([[1,2,3,4,5,6],[2,3,4,5,6,7],[3,4,5,6,7,8]])
print(arr)
print(‘索引第三行第四列:’,arr[2][5])
print(arr[0,3:]) #第0行 第三列的所有值
print(arr[0:,5]) #0行開始到最後一行,第5列的值

方法二:
print(arr[(0,1,2),(1,2,3)]) #依然是 行 列 的形式 第0,1,2行的第1,2,3列的值
print(arr[0,1],arr[1,2],arr[2,3]) #取出的是值
print(arr[1:,(0,2,3)]) #位置索引 + 列數

方法三:通過bool值取值:
mask = np.array([1,1,1],dtype=np.bool)
print(mask)
print(arr[mask,3])

變換陣列形態

arr = np.arange(12)#生成一維的陣列
print(arr)
print(‘新陣列為:’,arr.reshape(3,4))#改成二維陣列
arr2 = arr.reshape(3,4)
方法一:
print(‘展平後的陣列:’,arr2.ravel())#恢復成一維陣列
方法二:
print(‘展平後的陣列:’,arr2.flatten(‘F’))#F表示縱向展平
print(‘展平後的陣列:’,arr2.flatten(‘C’))#預設為C,表示橫向展平

組合:
arr3 = np.arange(12).reshape(3,4)
arr4 = 4*arr3
方法一:
print(np.hstack((arr3,arr4)))#橫向合併
print(np.vstack((arr3,arr4)))#縱向合併
方法二:
print(np.concatenate((arr3,arr4),axis = 1))#axis=1 表示橫座標,橫向變化;axis=0,表示縱座標,縱向變化

陣列的分割方式:
arr1 = np.arange(16).reshape(4,4)
print(arr1)
分割方法1:
print(np.hsplit(arr1,4))# 橫向分割
print(np.vsplit(arr1,2))# 縱向分割
分割方法2:
print(‘橫向分割後的陣列為:’,np.split(arr1,2,axis=1))
print(‘縱向分割後的陣列為:’,np.split(arr1,2,axis=0))