精品一区二区国语对白,国产成人精品三上悠亚久久,欧美性猛交xxxx88,亚洲中文字幕国产av,极品少妇被猛得白浆直流草莓视频,91精品成人www

行業(yè)產品

  • 行業(yè)產品

安徽思成儀器技術有限公司


當前位置:安徽思成儀器技術有限公司>技術文章>python創(chuàng)建矩陣,結合scipy.linalg在Python中使用線性系統(tǒng)
技術文章

python創(chuàng)建矩陣,結合scipy.linalg在Python中使用線性系統(tǒng)

閱讀:14發(fā)布時間:2024-11-23

摘要:將線性代數概念應用到實際問題中scipy.linalg 使用 Python 和 NumPy處理向量和矩陣 使用線性系統(tǒng)模擬實際問題 使用求解線性系統(tǒng) scipy.linalg

本文分享自華為云社區(qū)《使用scipy.linalg在Python中使用線性系統(tǒng)》,作者:Yuchuan。

線性代數廣泛應用于各種學科,一旦您使用向量和線性方程等概念組織信息,您就可以用它來解決許多問題。在Python中,與該主題相關的大多數例程都在中實現scipy.linalgpython創(chuàng)建矩陣,它提供了非??焖俚木€性代數功能。

尤其是,線性系統(tǒng)在模擬各種現實世界問題中發(fā)揮著重要作用,并scipy.linalg提供了以有效方式研究和解決這些問題的工具。

在本教程中,您將學習如何:

讓我們開始吧!

入門scipy.linalg

SciPy是一個用于科學計算的開源Python庫,包括用于科學和工程中常見任務的幾個模塊,例如線性代數、優(yōu)化、積分、插值和信號處理。它是SciPy堆棧的一部分,其中包括其他幾個用于科學計算的包,例如NumPy、Matplotlib、SymPy、IPython和pandas。

線性代數是數學的一個分支,涉及線性方程及其使用向量和矩陣的表示。它是用于多個工程領域的基礎學科,也是深入了解機器學習的先決條件。

scipy.linalg包括用于處理線性代數問題的多種工具,包括用于執(zhí)行矩陣計算的函數,例如行列式、逆矩陣、特征值、特征向量和奇異值分解。

在本教程中,您將使用from的一些函數scipy.linalg來解決涉及線性系統(tǒng)的實際問題。為了使用scipy.linalg,您必須安裝和設置SciPy庫,您可以使用AnacondaPython發(fā)行版和conda包和環(huán)境管理系統(tǒng)來完成。

注意:要了解有關Anaconda和conda的更多信息,請查看在Windows上設置Python進行機器學習。

首先,創(chuàng)建一個conda環(huán)境并激活它:

$condacreate--namelinalg$condaactivatelinalg

激活conda環(huán)境后,您的提示將顯示其名稱linalg.然后你可以在環(huán)境中安裝必要的包:

(linalg)$condainstallscipyjupyter

執(zhí)行此命令后,系統(tǒng)應該需要一段時間才能確定依賴項并繼續(xù)安裝。

注意:除了SciPy,您還將使用JupyterNotebook在交互式環(huán)境中運行代碼。這樣做不是強制性的,但它有助于處理數值和科學應用程序。

有關使用JupyterNotebooks的復習,請查看JupyterNotebook:簡介。

如果您更喜歡使用不同的Python發(fā)行版和pip包管理器來閱讀本文,請展開下面的可折疊部分以了解如何設置您的環(huán)境。

設置環(huán)境使用pip顯示隱藏

在打開JupyterNotebook之前,您需要注冊condalinalg環(huán)境,以便您可以使用它作為內核來創(chuàng)建Notebook。為此,在linalg激活環(huán)境的情況下,運行以下命令:

(linalg)$python-mipykernelinstall--user--namelinalg

現在您可以通過運行以下命令打開JupyterNotebook:

$jupyternotebook

在瀏覽器中加載Jupyter后,通過點擊創(chuàng)建一個新的筆記本電腦新→linalg,如下圖所示:

python創(chuàng)建矩陣_稀疏矩陣 python_matlab 矩陣創(chuàng)建

內的筆記本電腦,你可以測試是否安裝成功通過導入的scipy包:

>>>

In[1]:importscipy

現在您已經完成了環(huán)境的設置,您將看到如何在Python中使用向量和矩陣,這是使用scipy.linalg線性代數應用程序的基礎。

使用NumPy處理向量和矩陣

甲矢量是用來表示物理量同時具有大小和方向的數學實體。它是解決工程和機器學習問題的基本工具,就像矩陣一樣,用于表示向量變換等應用程序。

NumPy是Python中處理矩陣和向量的庫,用于處理scipy.linalg線性代數應用程序。在本節(jié)中,您將了解使用它創(chuàng)建矩陣和向量并對其執(zhí)行操作的基礎知識。

要開始處理矩陣和向量,您需要在JupyterNotebook中做的件事是導入numpy.通常的方法是使用別名np:

>>>

In[2]:importnumpyasnp

為了表示矩陣和向量,NumPy使用一種稱為ndarray.

要創(chuàng)建ndarray對象,您可以使用np.array(),它需要一個類似數組的對象,例如列表或嵌套列表。

例如,假設您需要創(chuàng)建以下矩陣:

稀疏矩陣 python_python創(chuàng)建矩陣_matlab 矩陣創(chuàng)建

要使用NumPy創(chuàng)建它,您可以使用np.array(),提供一個包含矩陣每一行元素的嵌套列表:

>>>

In[3]:A=np.array([[1,2],[3,4],[5,6]])...:AOut[3]:

python創(chuàng)建矩陣_稀疏矩陣 python_matlab 矩陣創(chuàng)建

array([[1,2],[3,4],[5,6]])

您可能會注意到,NumPy提供了矩陣的可視化表示,您可以在其中識別其列和行。

值得注意的是,NumPy數組的元素必須是相同類型的。您可以使用以下方法檢查NumPy數組的類型.dtype:

>>>

In[4]:A.dtypeOut[4]:dtype('int64')

由于的所有元素A都是整數,因此數組是用type創(chuàng)建的int64。如果元素之一是float,則將使用type創(chuàng)建數組float64:

In[5]:A=np.array([[1.0,2],[3,4],[5,6]])...:AOut[5]:array([[1.,2.],[3.,4.],[5.,6.]])In[6]:A.dtypeOut[6]:dtype('float64')

要檢查ndarray對象的尺寸,您可以使用.shape.例如,要檢查的尺寸A,您可以使用A.shape:

>>>

In[7]:A.shapeOut[7]:(3,2)

正如預期的那樣,A矩陣的維度是3×2因為A有三行和兩列。

在處理涉及矩陣的問題時,您通常需要使用轉置操作,它交換矩陣的列和行。

要轉置由ndarray對象表示的向量或矩陣,您可以使用.transpose()或.T。例如,你可以得到的轉A用A.T:

In[8]:A.TOut[8]:array([[1.,3.,5.],[2.,4.,6.]])

通過換位,列A變成了行,A.T行變成了列。

要創(chuàng)建向量,您可以使用np.array(),提供包含向量元素的列表:

>>>

In[9]:v=np.array([1,2,3])...:vOut[9]:array([1,2,3])

要檢查向量的維度,您可以.shape像以前一樣使用:

>>>

In[10]:v.shapeOut[10]:(3,)

請注意,此向量的形狀是(3,)andnot(3,1)or(1,3)。這是一個NumPy功能,適用于那些習慣使用MATLAB的人。在NumPy中,可以創(chuàng)建一維數組,例如v,這在執(zhí)行矩陣和向量之間的操作時可能會導致問題。例如,轉置操作對一維數組沒有影響。

稀疏矩陣 python_python創(chuàng)建矩陣_matlab 矩陣創(chuàng)建

每當您向提供類似一維數組的參數時np.array(),生成的數組將是一維數組。要創(chuàng)建二維數組,您必須提供類似二維數組的參數,例如嵌套列表:

>>>

In[11]:v=np.array([[1,2,3]])...:v.shapeOut[11]:(1,3)

在上述例子中,尺寸v是1×3,其對應于一個兩維的線矢量的尺寸。要創(chuàng)建列向量,您可以使用嵌套列表:

>>>

In[12]:v=np.array([[1],[2],[3]])...:v.shapeOut[12]:(3,1)

在這種情況下,尺寸v為3×1,其對應于一個兩維列向量的尺寸。

使用嵌套列表創(chuàng)建向量可能很費力,尤其是對于使用最多的列向量。作為替代方案,您可以創(chuàng)建一個一維向量,為提供一個平面列表np.array,并用于.reshape()更改ndarray對象的維度:

In[13]:v=np.array([1,2,3]).reshape(3,1)...:v.shapeOut[13]:(3,1)

在上面的示例中,您使用從.reshape()形狀(3,1)為的一維向量獲取形狀的列向量(3,)。值得一提的是,.reshape()期望新數組的元素數與原數組的元素數兼容。換句話說,具有新形狀的數組中的元素數必須等于原始數組中的元素數。

在這個例子中,你也可以在.reshape()不明確定義數組行數的情況下使用:

>>>

In[14]:v=np.array([1,2,3]).reshape(-1,1)...:v.shapeOut[14]:(3,1)

在這里,-1您提供的參數.reshape()表示新數組只有一列所需的行數,如第二個參數所。在這種情況下,由于原始數組具有三個元素,因此新數組的行數將為3。

在實際應用中,您經常需要創(chuàng)建零、一或隨機元素的矩陣。為此,NumPy提供了一些方便的函數,接下來您將看到這些函數。

使用便捷函數創(chuàng)建數組

NumPy還提供了一些方便的函數來創(chuàng)建數組。例如,要創(chuàng)建一個填充零的數組,您可以使用np.zeros():

>>>

In[15]:A=np.zeros((3,2))...:AOut[15]:array([[0.,0.],[0.,0.],[0.,0.]])

作為它的個參數,np.zeros()需要一個元組來指示您要創(chuàng)建的數組的形狀,它返回一個類型為的數組float64。

同樣,要創(chuàng)建填充數組,您可以使用np.ones():

>>>

In[16]:A=np.ones((2,3))...:AOut[16]:array([[1.,1.,1.],[1.,1.,1.]])

值得注意的是,np.ones()它還返回一個類型為的數組float64。

稀疏矩陣 python_matlab 矩陣創(chuàng)建_python創(chuàng)建矩陣

要創(chuàng)建具有隨機元素的數組,您可以使用np.random.rand():

In[17]:A=np.random.rand(3,2)...:AOut[17]:array([[0.8206045,0.],[0.9490381,0.],[0.,0.4709059]])

np.random.rand()返回一個包含從0到的隨機元素的數組1,取自均勻分布。請注意,與np.zeros()and不同np.ones(),np.random.rand()它不期望元組作為其參數。

同樣,要從均值和單位方差為零的正態(tài)分布中獲取隨機元素的數組,您可以使用np.random.randn():

>>>

In[18]:A=np.random.randn(3,2)...:AOut[18]:array([[-1.,-1.],[-0.,-0.],[0.,-2.]])

現在您已經創(chuàng)建了數組,您將看到如何使用它們執(zhí)行操作。

對NumPy數組執(zhí)行操作

在數組上使用加法(+)、減法(-)、乘法(*)、除法(/)和指數(**)運算符的常見Python運算始終按元素執(zhí)行。如果操作數之一是標量,則將在標量和數組的每個元素之間執(zhí)行操作。

例如,為了創(chuàng)建填充元素的矩陣等于10,則可以使用np.ones()由和乘法的輸出10使用*:

>>>

In[19]:A=10*np.ones((2,2))...:AOut[19]:array([[10.,10.],[10.,10.]])

如果兩個操作數都是相同形狀的數組,則將在數組的對應元素之間執(zhí)行操作:

>>>

In[20]:A=10*np.ones((2,2))...:B=np.array([[2,2],[5,5]])...:C=A*B...:COut[20]:array([[20.,20.],[50.,50.]])

在這里,您將matrixA的每個元素乘以matrix的相應元素B。

要根據線性代數規(guī)則執(zhí)行矩陣乘法,您可以使用np.dot():

>>>

In[21]:A=np.array([[1,2],[3,4]])...:v=np.array([[5],[6]])...:x=np.dot(A,v)...:xOut[21]:array([[17],[39]])

稀疏矩陣 python_python創(chuàng)建矩陣_matlab 矩陣創(chuàng)建

在這里,您乘以一個2×2矩陣A,該矩陣由一個名為的2×1向量命名v。

您可以使用@運算符獲得相同的結果,從PEP465和Python3.5開始,NumPy和本機Python都支持該運算符:

>>>

In[22]:A=np.array([[1,2],[3,4]])...:v=np.array([[5],[6]])...:x=A@v...:xOut[22]:array([[17],[39]])

除了處理矩陣和向量的基本操作外,NumPy還提供了一些特定的函數來處理numpy.linalg.但是,對于這些應用程序,它scipy.linalg具有一些優(yōu)勢,您將在下面看到。

比較scipy.linalg用numpy.linalg

NumPy在numpy.linalg模塊中包含一些用于處理線性代數應用程序的工具。但是,除非您不想將SciPy作為依賴項添加到項目中,否則通常使用scipy.linalg,原因如下:

總之,考慮到科學和技術應用一般沒有關于限制的依賴,它通常是一個好主意,安裝SciPy的和使用scipy.linalg代替numpy.linalg。

在下一節(jié)中,您將使用scipy.linalg工具來處理線性系統(tǒng)。您將首先通過一個簡單的示例了解基礎知識,然后將這些概念應用于實際問題。

使用scipy.linalg.solve()求解線性系統(tǒng)

線性系統(tǒng)可以成為解決幾個實際和重要問題的有用工具,包括與車輛交通、平衡化學方程式、電路和多項式插值相關的問題。

在本節(jié)中,您將學習如何使用scipy.linalg.solve()來求解線性系統(tǒng)。但是在開始編寫代碼之前,了解基礎知識很重要。

了解線性系統(tǒng)

甲線性系統(tǒng),或者更精確地說,線性方程系統(tǒng),是一組直線與一組變量方程。以下是與變量x?、x?和x?相關的線性系統(tǒng)示例:

python創(chuàng)建矩陣_matlab 矩陣創(chuàng)建_稀疏矩陣 python

這里有涉及三個變量的三個方程。為了有一個線性系統(tǒng),值??...??和b?...b?必須是常數。

當只有兩個或三個方程和變量時,可以手動執(zhí)行計算、組合方程并找到變量的值。但是,對于四個或更多變量,手動求解線性系統(tǒng)需要相當長的時間,并且經常會出錯。

實際應用通常涉及大量變量,這使得手動求解線性系統(tǒng)是不可行的。幸運的是,有一些工具可以完成這項艱巨的工作,例如scipy.linalg.solve().

使用scipy.linalg.solve()

SciPy提供scipy.linalg.solve()快速且可靠的方式求解線性系統(tǒng)。要了解它是如何工作的,請考慮以下系統(tǒng):

python創(chuàng)建矩陣_matlab 矩陣創(chuàng)建_稀疏矩陣 python

為了使用scipy.linalg.solve(),您首先需要將線性系統(tǒng)寫為矩陣乘積,如下面的等式所示:

稀疏矩陣 python_matlab 矩陣創(chuàng)建_python創(chuàng)建矩陣

請注意,您將在計算矩陣乘積后得出系統(tǒng)的原始方程。scipy.linalg.solve()期望求解的輸入是matrixA和vectorb,您可以使用NumPy數組定義它們。這樣,您可以使用以下代碼解決系統(tǒng)問題:

>>>

1In[1]:importnumpyasnp2...:fromscipy.linalgimportsolve34In[2]:A=np.array(5...:[6...:[3,2],7...:[2,-1],8...:]9...:)1011In[3]:b=np.array([12,1]).reshape((2,1))1213In[4]:x=solve(A,b)14...:x

matlab 矩陣創(chuàng)建_python創(chuàng)建矩陣_稀疏矩陣 python

15Out[4]:16array([[2.],17[3.]])

以下是正在發(fā)生的事情的細分:

如果將原始方程中的x?=2和x?=3替換,則可以驗證這是系統(tǒng)的解。

現在您已經了解了使用的基礎知識scipy.linalg.solve(),是時候了解線性系統(tǒng)的實際應用了。

解決實際問題:BuildingaMealPlan

通常使用線性系統(tǒng)解決的一類問題是當您需要找到獲得某種混合物所需的組件比例時。下面,您將使用這個想法來制定膳食計劃,混合不同的食物以獲得均衡的飲食。

為此python創(chuàng)建矩陣,請考慮均衡飲食應包括以下內容:

你的任務是找出每種不同食物的數量,以獲得數量的維生素。在下表中,您可以根據每種維生素的單位分析1克每種食物的結果:

你的任務是找出每種不同食物的數量,以獲得數量的維生素。在下表中,您可以根據每種維生素的單位分析1克每種食物的結果:

matlab 矩陣創(chuàng)建_python創(chuàng)建矩陣_稀疏矩陣 python

通過將食物1表示為x?等,并考慮到您將混合x?單位的食物1、x2單位的食物2等等,您可以寫出您所攝入的量的表達式d進入組合??紤]到均衡飲食應包含170個單位的,您??可以使用列中的數據寫出以下等式:

稀疏矩陣 python_matlab 矩陣創(chuàng)建_python創(chuàng)建矩陣

對、C、D和E重復相同的過程,您會得到以下線性系統(tǒng):

matlab 矩陣創(chuàng)建_稀疏矩陣 python_python創(chuàng)建矩陣

要使用scipy.linalg.solve(),您必須獲得系數矩陣A和獨立項向量b,它們由以下給出:

python創(chuàng)建矩陣_matlab 矩陣創(chuàng)建_稀疏矩陣 python

現在您只需使用scipy.linalg.solve()來找出數量x?,…,x?:

>>>

In[1]:importnumpyasnp...:fromscipy.linalgimportsolveIn[2]:A=np.array(...:[...:[1,9,2,1,1],...:[10,1,2,1,1],...:[1,0,5,1,1],...:[2,1,1,2,9],...:[2,1,2,13,2],...:]...:)In[3]:b=np.array([170,180,140,180,350]).reshape((5,1))In[4]:x=solve(A,b)...:xOut[4]:array([[10.],[10.],[20.],[20.],[10.]])

這表明均衡飲食應包括10食物單位1、食物10單位2、20食物20單位3、食物單位4和10食物單位5。

結論

恭喜!您已經學習了如何使用一些線性代數概念以及如何使用scipy.linalg來解決涉及線性系統(tǒng)的問題。您已經看到向量和矩陣可用于表示數據,并且通過使用線性代數概念,您可以對實際問題進行建模并以有效的方式解決它們。

在本教程中,您學習了如何:

點擊關注,時間了解華為云新鮮技術~


儀表網 設計制作,未經允許翻錄必究 .? ? ? Copyright(C)?2021 http://www.wididy.cn,All rights reserved.

以上信息由企業(yè)自行提供,信息內容的真實性、準確性和合法性由相關企業(yè)負責,儀表網對此不承擔任何保證責任。 溫馨提示:為規(guī)避購買風險,建議您在購買產品前務必確認供應商資質及產品質量。

會員登錄

×

請輸入賬號

請輸入密碼

=請輸驗證碼

收藏該商鋪

登錄 后再收藏

提示

您的留言已提交成功!我們將在第一時間回復您~
朝阳区| 天长市| 丹江口市| 伊春市| 阿拉善右旗| 渝北区| 江陵县| 顺昌县| 忻城县| 铜山县| 天水市| 衡阳市| 邢台县| 忻城县| 勐海县| 枣阳市| 玉山县| 合水县| 龙江县|