真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在Numpy中使用向量和矩陣-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)怎么在Numpy中使用向量和矩陣,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識(shí)有一定的了解。

成都創(chuàng)新互聯(lián)主要從事網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、響應(yīng)式網(wǎng)站開發(fā)、程序開發(fā)、網(wǎng)站優(yōu)化、微網(wǎng)站、微信小程序定制開發(fā)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營銷、管理等多方位專業(yè)化運(yùn)作于一體。

歸納一下,下面的代碼主要做了這些事:

  • 創(chuàng)建一個(gè)向量

  • 創(chuàng)建一個(gè)矩陣

  • 創(chuàng)建一個(gè)稀疏矩陣

  • 選擇元素

  • 展示一個(gè)矩陣的屬性

  • 對多個(gè)元素同時(shí)應(yīng)用某種操作

  • 找到大值和最小值

  • 計(jì)算平均值、方差和標(biāo)準(zhǔn)差

  • 矩陣變形

  • 轉(zhuǎn)置向量或矩陣

  • 展開一個(gè)矩陣

  • 計(jì)算矩陣的秩

  • 計(jì)算行列式

  • 獲取矩陣的對角線元素

  • 計(jì)算矩陣的跡

  • 計(jì)算特征值和特征向量

  • 計(jì)算點(diǎn)積

  • 矩陣的相加相減

  • 矩陣的乘法

  • 計(jì)算矩陣的逆

一起來看代碼吧:

# 加載numpy庫
import numpy as np

from scipy import sparse

# 創(chuàng)建一個(gè)一維數(shù)組表示一個(gè)行向量
vector_row = np.array([1, 2, 3])

# 創(chuàng)建一個(gè)一維數(shù)組表示一個(gè)列向量
vector_column = np.array([[1], [2], [3]])

# 創(chuàng)建一個(gè)二維數(shù)組表示一個(gè)矩陣
matrix1 = np.array([[1, 2], [1, 2], [1, 2]])

# 利用Numpy內(nèi)置矩陣數(shù)據(jù)結(jié)構(gòu)
matrix1_object = np.mat([[1, 2], [1, 2], [1, 2]])

# 創(chuàng)建一個(gè)新的矩陣
matrix2 = np.array([[0, 0], [0, 1], [3, 0]])

# 創(chuàng)建一個(gè)壓縮的稀疏行(CSR)矩陣
matrix2_sparse = sparse.csc_matrix(matrix2)

# 查看稀疏矩陣
print(matrix2_sparse)

# 創(chuàng)建一個(gè)更大的矩陣
matrix_large = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
             [0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
             [3, 0, 0, 0, 0, 0, 0, 0, 0, 0]])

# 創(chuàng)建一個(gè)CSR矩陣
matrix_large_sparse = sparse.csr_matrix(matrix_large)

# 查看更大的稀疏矩陣
print(matrix_large_sparse)

# 創(chuàng)建一個(gè)行向量
vector = np.array([1, 2, 3, 4, 5, 6])

# 創(chuàng)建矩陣
matrix_vector = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 選擇向量的第三個(gè)元素
print(vector[2])

# 選擇第二行第二列
print(matrix_vector[1, 1])

# 選取一個(gè)向量的所有元素
print(vector[:])

# 選取從0開始一直到第3個(gè)(包含第3個(gè))元素
print(vector[:3])

# 選取第3個(gè)元素之后的全部元素
print(vector[3:])

# 選取最后一個(gè)元素
print(vector[-1])

# 選取矩陣的第1行和第2行以及所有列
print(matrix_vector[:2, :])

# 選取所有行以及第2列
print(matrix_vector[:, 1:2])

# 選取所有行以及第2列并轉(zhuǎn)換成一個(gè)新的行向量
print(matrix_vector[:, 1])

# 創(chuàng)建新的矩陣
matrix3 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])

# 查看行數(shù)和列數(shù)
print(matrix3.shape)

# 查看元素?cái)?shù)量
print(matrix3.size)

# 查看維數(shù)
print(matrix3.ndim)

# 下面使用的矩陣是matrix_vector
# 創(chuàng)建一個(gè)匿名函數(shù),返回輸入值加上100以后的值
add_100 = lambda i: i+100

# 創(chuàng)建向量轉(zhuǎn)化函數(shù)
vectorized_add_100 = np.vectorize(add_100)

# 對矩陣的所有元素應(yīng)用這個(gè)函數(shù)
print(vectorized_add_100(matrix_vector))

# 用后矩陣本身不變
print(matrix_vector)

# 連續(xù)使用
print(vectorized_add_100(vectorized_add_100(matrix_vector)))

# 返回大的元素
print(np.max(matrix_vector))

# 返回最小元素
print(np.min(matrix_vector))

# 找到每一列的大元素
print(np.max(matrix_vector, axis=0))

# 找到每一行大的元素
print(np.max(matrix_vector, axis=1))

# 返回平均值
print(np.mean(matrix_vector))

# 返回方差
print(np.var(matrix_vector))

# 返回標(biāo)準(zhǔn)差
print(np.std(matrix_vector))

# 求每一列的平均值
print(np.mean(matrix_vector, axis=0))

# 求每一行的方差
print(np.var(matrix_vector, axis=1))

# 將matrix3矩陣變?yōu)?×6矩陣
matrix4 = matrix3.reshape(2, 6)
print(matrix4)

# 上面的變形要求前后元素個(gè)數(shù)相同,且不會(huì)改變元素個(gè)數(shù)
print(matrix4.size)

# reshape時(shí)傳入?yún)?shù)-1意味著可以根據(jù)需要填充元素
print(matrix3.reshape(1, -1))

# reshape如果提供一個(gè)整數(shù),那么reshape會(huì)返回一個(gè)長度為該整數(shù)值的一維數(shù)組
print(matrix3.reshape(12))

# 轉(zhuǎn)置matrix_vector矩陣
print(matrix_vector.T)

# 嚴(yán)格地講,向量是不能被轉(zhuǎn)置的
print(vector.T)

# 轉(zhuǎn)置向量通常指二維數(shù)組表示形式下將行向量轉(zhuǎn)換為列向量或者反向轉(zhuǎn)換
print(np.array([[1, 2, 3, 4, 5, 6]]).T)

# 將matrix_vector矩陣展開
print(matrix_vector.flatten())

# 將矩陣展開的另一種策略是利用reshape創(chuàng)建一個(gè)行向量
print(matrix_vector.reshape(1, -1))

# 創(chuàng)建用于求秩的新矩陣
matrix5 = np.array([[1, 1, 1], [1, 1, 10], [1, 1, 15]])

# 計(jì)算矩陣matrix5的秩
print(np.linalg.matrix_rank(matrix5))

# 創(chuàng)建用于行列式求解的新矩陣
matrix6 = np.array([[1, 2, 3], [2, 4, 6], [3, 8, 9]])

# 求解矩陣matrix6的行列式
print(np.linalg.det(matrix6))

# 返回矩陣的對角線元素
print(matrix6.diagonal())

# 返回主對角線向上偏移量為1的對角線元素
print(matrix6.diagonal(offset=1))

# 返回主對角線向下偏移量為1的對角線元素
print(matrix6.diagonal(offset=-1))

# 返回矩陣的跡
print(matrix6.trace())

# 求跡的另外的方法(返回對角線元素并求和)
print(sum(matrix6.diagonal()))

# 創(chuàng)建一個(gè)求解特征值、特征向量的矩陣
matrix7 = np.array([[1, -1, 3], [1, 1, 6], [3, 8, 9]])

# 計(jì)算特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(matrix7)

# 查看特征值
print(eigenvalues)

# 查看特征向量
print(eigenvectors)

# 構(gòu)造兩個(gè)點(diǎn)積(數(shù)量積)所需向量
vector_a = np.array([1, 2, 3])
vector_b = np.array([4, 5, 6])

# 計(jì)算點(diǎn)積
print(np.dot(vector_a, vector_b))

# Python 3.5+ 版本可以這樣求解點(diǎn)積
print(vector_a @ vector_b)

# 構(gòu)造兩個(gè)可用于加減的矩陣
matrix_a = np.array([[1, 1, 1], [1, 1, 1], [1, 1, 2]])
matrix_b = np.array([[1, 3, 1], [1, 3, 1], [1, 3, 8]])

# 兩矩陣相加
print(np.add(matrix_a, matrix_b))

# 兩矩陣相減
print(np.subtract(matrix_a, matrix_b))

# 直接用+/-也可以做矩陣加減
print(matrix_a + matrix_b)
print(matrix_a - matrix_b)

# 構(gòu)造兩個(gè)可用于乘法的小矩陣
matrix_c = np.array([[1, 1], [1, 2]])
matrix_d = np.array([[1, 3], [1, 2]])

# 兩矩陣相乘
print(np.dot(matrix_c, matrix_d))

# Python 3.5+ 版本可以這樣求解矩陣乘法
print(matrix_c @ matrix_d)

# 我們也可以把兩矩陣對應(yīng)元素相乘,而非矩陣乘法
print(matrix_c * matrix_d)

# 創(chuàng)建一個(gè)用于求逆的矩陣
matrix8 = np.array([[1, 4], [2, 5]])

# 計(jì)算矩陣的逆
print(np.linalg.inv(matrix8))

# 驗(yàn)證一個(gè)矩陣和它的逆矩陣相乘等于I(單位矩陣)
print(matrix8 @ np.linalg.inv(matrix8))

測試結(jié)果:

  (2, 0) 3
  (1, 1) 1
  (1, 1) 1
  (2, 0) 3
3
5
[1 2 3 4 5 6]
[1 2 3]
[4 5 6]
6
[[1 2 3]
 [4 5 6]]
[[2]
 [5]
 [8]]
[2 5 8]
(3, 4)
12
2
[[101 102 103]
 [104 105 106]
 [107 108 109]]
[[1 2 3]
 [4 5 6]
 [7 8 9]]
[[201 202 203]
 [204 205 206]
 [207 208 209]]
9
1
[7 8 9]
[3 6 9]
5.0
6.666666666666667
2.581988897471611
[4. 5. 6.]
[0.66666667 0.66666667 0.66666667]
[[ 1  2  3  4  5  6]
 [ 7  8  9 10 11 12]]
12
[[ 1  2  3  4  5  6  7  8  9 10 11 12]]
[ 1  2  3  4  5  6  7  8  9 10 11 12]
[[1 4 7]
 [2 5 8]
 [3 6 9]]
[1 2 3 4 5 6]
[[1]
 [2]
 [3]
 [4]
 [5]
 [6]]
[1 2 3 4 5 6 7 8 9]
[[1 2 3 4 5 6 7 8 9]]
2
0.0
[1 4 9]
[2 6]
[2 8]
14
14
[13.55075847  0.74003145 -3.29078992]
[[-0.17622017 -0.96677403 -0.53373322]
 [-0.435951    0.2053623  -0.64324848]
 [-0.88254925  0.15223105  0.54896288]]
32
32
[[ 2  4  2]
 [ 2  4  2]
 [ 2  4 10]]
[[ 0 -2  0]
 [ 0 -2  0]
 [ 0 -2 -6]]
[[ 2  4  2]
 [ 2  4  2]
 [ 2  4 10]]
[[ 0 -2  0]
 [ 0 -2  0]
 [ 0 -2 -6]]
[[2 5]
 [3 7]]
[[2 5]
 [3 7]]
[[1 3]
 [1 4]]
[[-1.66666667  1.33333333]
 [ 0.66666667 -0.33333333]]
[[1.00000000e+00 0.00000000e+00]
 [1.11022302e-16 1.00000000e+00]]

關(guān)于怎么在Numpy中使用向量和矩陣就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


本文題目:怎么在Numpy中使用向量和矩陣-創(chuàng)新互聯(lián)
路徑分享:http://weahome.cn/article/djpgoo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部