numpy模塊

numpy模塊:

--對numpy數值---矩陣進行科學運算
--數據分析
--tensorflow/pytorch ---張量進行科學運算
kaggle / 天池 /acm
import numpy as np
gpu -->圖形顯卡0---圖形存儲

--->numpy數組--可變
#---一維
arrl = np.array([1,2,4,6])  #[可迭代]
#二維
arr = np.array([[1,2,4],[7,8,9]])
#三維 ---》tensorflow

#屬性:
T  行位互換
dtype  #數組元素的數據類型,numpy數組屬於python
ndim 維數
shape 維度大小(元組)
astype 類型轉換

切割數組:
print(arr[:,:]) #行,列--從零開始,不要最後的
--》有步長
賦值:
print(arr[:,:] = 0)
--》邏輯取值

--數組合並:
np.hstack((arr1,arr2))  水平
np.vstack((arr1,arr2))   垂
np.concatenate(((arr1,arr2),axis=0/1))

numpy模塊:python

--是python中一種開源的數值計算擴展庫。能夠用來存儲和處理大型numpy數組。數組

用途:
1.區別於list1列表。提供了數組操做,數組運算,及統計分佈和簡單的數學模型app

2.計算速度快,甚至要優於python內置的簡單運算, 使得其成爲pandas、sklearn等模塊的依賴包。 高級的框架如TensorFlow、PyTorch等,其數組操做也和numpy很是類似。框架

爲何用numpy?dom

list1 =[1,2,3]
list2 = [4,5,6]
--list1 * list2
lis_res = []
for i in range(len(list1)):
    lis_res.append(list1[i]*list2[i])
---時間複雜度: for 循環--》o(n)

建立numpy數組:
---numpy數組即numpy的ndaray對象,建立numpy數組就是把一個列表傳入np.array()方法函數

import numpy as np

#建立一維數組:
arr = np.array([1,2,3])# []爲可變數據類型
print(arr,type(arr))

#建立二維數組
arr1 = np.array([[1,2,3],[4,5,6]])

#建立三維數組
arr2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

numpy數組的經常使用屬性:spa

T     數組的轉置(行位互換)--》高維
dtype 數組元素的數據類型
size  數組元素的個數
ndim  數組的維數
shape 數組的維度大小(以元組形式)
astype 類型轉換

dtype 種類: bool_,int(8,16,32,64),
            float(16,32,64)
arr = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32)
print(arr)

[[1. 2. 3.]
 [4. 5. 6.]]
print(arr.T)

[[1. 4.]
 [2. 5.]
 [3. 6.]]
print(arr.shape)
(2, 3)  #二行,三列

numpy數組的行列數:code

print(arr.shape[0])
-->行
print(arr.shape[1])
-->列

切割數組:orm

--numpy數組的切割涉及到行和列的切割,可是二者切割的方式都是從索引0開始,而且取頭不取尾。對象

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])

#取全部元素
print(arr[:,:])
#取第一行全部元素
print(arr[:1,:])
print(arr[0, [0, 1, 2, 3]])
#取第一列全部元素
print(arr[:,:1])


#---邏輯取值,返回一個數組,
print(arr[arr>5])
--[ 6  7  8  9 10 11 12]

numpy數組按運算符取元素的原理,即經過arr > 5生成一個布爾numpy數組
print(arr > 5)

numpy數組元素替換:

--numpy數組也是一個可變類型的數據,即若是對numpy數組進行替換操做,會修改原numpy數組的元素

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(arr)

arr1 = arr.copy()
arr1[:1,:] = 0
print(arrl)
[[ 0  0  0  0]
 [ 5  6  7  8]
 [ 9 10 11 12]]

arr2 = arr.copy()
arr[arr>5] = 0
print(arr2)

arr3[:,:] = 0

numpy數組的合併:

arr1 = np.array([[1, 2], [3, 4], [5, 6]])

arr2 = np.array([[7, 8], [9, 10], [11, 12]])
# 合併兩個numpy數組的行,注意使用hstack()方法合併numpy數組,numpy數組應該有相同的行,其中hstack的h表示horizontal水平的
print(np.hstack(arr1,arr2))
[[ 1  2  7  8]
 [ 3  4  9 10]
 [ 5  6 11 12]]

# 合併兩個numpy數組,其中axis=1表示合併兩個numpy數組的行
print(np.concatenate((arr1, arr2), axis=1))

# 合併兩個numpy數組的列,注意使用vstack()方法合併numpy數組,numpy數組應該有相同的列,其中vstack的v表示vertical垂直的
print(np.vstack((arr1, arr2)))
[[ 1  2]
 [ 3  4]
 [ 5  6]
 [ 7  8]
 [ 9 10]
 [11 12]]
# 合併兩個numpy數組,其中axis=0表示合併兩個numpy數組的列
print(np.concatenate((arr1, arr2), axis=0))

經過函數建立numpy數組:

array()    將列表轉化爲數組,可選擇顯示指定dtype
areange()   range的numpy版,支持浮點數
linspace()  相似arange(),第三參數爲數組長度
zero()/ones() 根據指定形狀和dtype建立全0 / 1數組  
eye()      建立單位矩陣
empty()    建立一個元素全隨機數
reshape()  重塑形狀
arr = np.array([1,2,3])
print(arr)

print(np.arange(10))
-[0 1 2 3 4 5 6 7 8 9]
print(np.arange(1,10,2))

--linspace / logspace
#構造一個等差數列,
print(np.linspace(0,20,5))
--[ 0.  5. 10. 15. 20.]
# 構造一個等比數列,從10**0取到10**20,取5個數
print(np.logspace(0,20,5))
--[1.e+00 1.e+05 1.e+10 1.e+15 1.e+20]

zeros / ones / eye / empty
print(n.zero(3,4))
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]

print(np,eye(3))
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

 構造一個4*4的隨機numpy數組,裏面的元素是隨機生成的
print(np.empty((4, 4)))
[[ 2.31584178e+077 -1.49457545e-154  3.95252517e-323  0.00000000e+000]
 [ 0.00000000e+000  0.00000000e+000  0.00000000e+000  0.00000000e+000]
 [ 0.00000000e+000  0.00000000e+000  0.00000000e+000  0.00000000e+000]
 [ 0.00000000e+000  0.00000000e+000  1.29074055e-231  1.11687366e-308]]

#reshape--重塑形狀
arr = np.ones([2,2],dtype=int)
print(arr.reshape(4,1))
[[1]
 [1]
 [1]
 [1]]

numpy數組運算:

+   兩個numpy數組對應元素相加
-   兩個numpy數組對應元素相減
*   兩個numpy數組對應元素相乘
/   兩個numpy數組對應元素相除,若是都是整數則取商
%   兩個numpy數組對應元素相除後取餘數
**n 單個numpy數組每一個元素都取n次方,如**2:每一個元素都取平方
arr1 = np.array([[1, 2], [3, 4], [5, 6]])
arr2 = np.array([[7, 8], [9, 10], [11, 12]])

print(ar11+arr2)
print(arr1**2)
[[ 8 10]
 [12 14]
 [16 18]]

numpy數組的轉置

---numpy數組的行和列互換

arr = np.array([[1, 2, 3], [4, 5, 6]])

print(arr.transpose) /print(arr.T)
[1 4]
 [2 5]
 [3 6]]

numpy數組的逆:

--numpy數組行和列相同時,numpy數組纔可逆

arr = np.array([[1, 2, 3], [4, 5, 6], [9, 8, 9]])

print(np.linalg.inv(arr))

Numpy數組科學和統計方法:

sum 求和
cumsum  累加求和
mean    求平均數
std 求標準差
var 求方差
min 求最小值
max 求最大值
argmin  求最小值索引
argmax  求最大值索引
sort    排序
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

print(arr.max())
# 獲取舉着每一行的最大值
print(arr.max(axis=0))
# 獲取numpy數組最大元素的索引位置
print(arr.argmax(axis=1))
# 獲取numpy數組每一列的平均值
print(arr.mean(axis=0))
# 獲取numpy數組每一列的元素的方差
print(arr.var(axis=0))
# 對numpy數組的每一列求和
print(arr.sum(axis=0))
# 第n個元素爲前n-1個元素累加和
print(arr.cumsum())

numpy.random生成隨機數:

rand(d0,d1,⋯,dn)    產生均勻分佈的隨機數  dn爲第n維數據的維度
randn(d0,d1,⋯,dn)   產生標準正態分佈隨機數 dn爲第n維數據的維度
randint(low[, high, size, dtype])   產生隨機整數  low:最小值;high:最大值;size:數據個數
random_sample([size])   在[0,1)內產生隨機數    size爲隨機數的shape,能夠爲元祖或者列表
choice(a[, size])   從arr中隨機選擇指定數據   arr爲1維數組;size爲數組形狀
uniform(low,high [,size])   給定形狀產生隨機數組  low爲最小值;high爲最大值,size爲數組形狀
shuffle(a)  與random.shuffle相同   a爲指定數組
相關文章
相關標籤/搜索