numpy模塊(對矩陣的處理,ndarray對象)

6.12自我總結

一.numpy模塊

import numpy as np約定俗稱要把他變成nppython

1.模塊官方文檔地址

https://docs.scipy.org/doc/numpy/reference/?v=20190307135750數組

2.建立矩陣

1.np.array

import numpy as np
#建立一維的ndarray對象
arr = np.array([1, 2, 3])
print(arr)
#[1 2 3]

#建立二維的ndarray對象
arr = np.array([[1, 2, 3],
               [4,5,6]])
print(arr)
'''
[[1 2 3]
 [4 5 6]]
'''
#建立三維的ndarray對象
arr = np.array([[[1, 2, 3],[3,2,1]],
               [[4,5,6],[6,5,4]]])
print(arr)
'''
[[[1 2 3]
  [3 2 1]]

 [[4 5 6]
  [6 5 4]]]
'''

#咱們能夠這樣理解.其實內這個能夠至關於幾何裏面的,點,線,面,裏面各個元素至關一個點,一個列表裏面有幾個元素至關於線也就是一維,而後列表裏面套列表至關於線,以此類推

3.對於矩陣的操做(ndarray對象的方法)

1.shape(查看ndarray對象的形式)

import numpy as np
arr = np.array([[1, 2, 3],
               [4,5,6]])
print(arr.shape)
#(2, 3)
# (矩陣的行數,矩陣的列數)

2.切分工具

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

#取第一行所有
print(arr[0,:])

#取第一列所有
print(arr[:,0])

#取第二行第二個
print(arr[1,1],type(arr[1,1])) #5 <class 'numpy.int32'>
print(arr[1,1:2],type(arr[1,1:2]))#[5] <class 'numpy.ndarray'>

#取第二行第第二個和第三個
print(arr[1,1:3])

#取大於3的值
print(arr[arr>3])

#取第第一列大於3的值
arr_lien = arr[:,0]
print(arr_lien[arr_lien>3])

3.生成布爾矩陣

import numpy as np
arr = np.array([[1, 2, 3],
               [4,5,6]])
print(arr>5)
'''
[[False False False]
 [False False  True]]
'''

4.矩陣的替換

用切片取值而後進行賦值

5.矩陣合併

1.np.concatenate
import numpy as np
arr1 = np.array([[1, 2, 3],
               [4,5,6]])
arr1 = np.array([[3, 2, 4],
               [5,3,7]])

print(np.concatenate((arr1,arr2),axis=0或1) #前面只能寫入一個容器,後面用axis控制豎着合併仍是橫着合併

6.矩陣的生成

1.arange
np.arage(起始值,結束值,步長)#顧頭不顧尾,用法相似for 循環中的range
2.linspace/logspace
# 構造一個等差數列,取頭也取尾,從0取到20,取5個數
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]
3.zeros/ones/eye
# 構造3*4的全0矩陣
print(np.zeros((3, 4))) #填的值爲(行數,列數)

# 構造3*4的全1矩陣
print(np.ones((3, 4)))  #填的值爲(行數,列數)

# 構造3個主元的單位矩陣
print(np.eye(3))     #填的值爲(主元的個數)
'''
[[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]
'''
4.fromstring/fromfunction
# fromstring經過對字符串的字符編碼所對應ASCII編碼的位置,生成一個ndarray對象
s = 'abcdef'
# np.int8表示一個字符的字節數爲8
print(np.fromstring(s, dtype=np.int8)) 

def func(i, j):
    """其中i爲矩陣的行,j爲矩陣的列"""
    return i*j


# 使用函數對矩陣元素的行和列的索引作處理,獲得當前元素的值,索引從0開始,並構造一個3*4的矩陣
print(np.fromfunction(func, (3, 4)))
7.隨機生成(np.random)
# RandomState()方法會讓數據值隨機一次,以後都是相同的數據
rs = np.random.RandomState(1)
print(rs.rand(10))

# 構造3*4的均勻分佈的矩陣
# seed()方法會讓數據值隨機一次,以後都是相同的數據
np.random.seed(1)
print(np.random.rand(3, 4))

# 構造3*4*5的均勻分佈的矩陣
print(np.random.rand(3, 4, 5))

# 構造3*4的正態分佈的矩陣
print(np.random.randn(3, 4))

# 構造取值爲1-5內的10個元素的ndarray數組
print(np.random.randint(1, 5, 10))

# 構造取值爲0-1內的3*4的矩陣
print(np.random.random_sample((3, 4)))

# 隨機選取arr中的兩個元素
print(np.random.choice(arr, size=2))

對照表dom

函數名稱 函數功能 參數說明
rand(d0,d1,⋯,dn) 產生[0,1)內的均勻分佈的隨機數 d~n~爲第n維數據的維度
randn(d0,d1,⋯,dn) 產生標準正態分佈隨機數 d~n~爲第n維數據的維度
randint(low[, high, size, dtype]) 產生隨機整數 low:最小值;high:最大值;size:數據個數
random_sample([size]) 在[0,1)內產生隨機數 size爲隨機數的shape,能夠爲元祖或者列表
choice(a[, size]) 從arr中隨機選擇指定數據 arr爲1維數組;size爲數據形狀

4.矩陣運算(與數據類型差很少)函數

運算表工具

運算符 說明
+ 兩個矩陣對應元素相加
- 兩個矩陣對應元素相減
* 兩個矩陣對應元素相乘
/ 兩個矩陣對應元素相除,若是都是整數則取商
% 兩個矩陣對應元素相除後取餘數
**n 單個矩陣每一個元素都取n次方,如**2:每一個元素都取平方

4.矩陣的行和列互換(transpose)

5.矩陣的最大最小值 ,平均值,方差

1.最大值ndarray對象.max

2.最小值ndarray對象.min

3.平均值ndarray對象.mean

4.方差ndarray對象.var

()表明區別編碼

(axis=0)每列spa

(axis=1)每行code

# 獲取矩陣全部元素中的最大值
print(arr.max())

# 獲取舉着每一列的最大值
print(arr.max(axis=0))

# 獲取矩陣每一行的最大值
print(arr.max(axis=1))

# 獲取矩陣最大元素的索引位置
print(arr.argmax(axis=1)
      
# 獲取矩陣全部元素的平均值
print(arr.mean())

# 獲取矩陣每一列的平均值
print(arr.mean(axis=0))
      
# 獲取矩陣每一行的平均值
print(arr.mean(axis=1))
      
# 獲取矩陣全部元素的方差
print(arr.var())

# 獲取矩陣每一列的元素的方差
print(arr.var(axis=0))
      
# 獲取矩陣每一行的元素的方差
print(arr.var(axis=1))
相關文章
相關標籤/搜索