日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python矩阵对角化_numpy创建单位矩阵和对角矩阵的实例

發(fā)布時間:2025/3/15 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python矩阵对角化_numpy创建单位矩阵和对角矩阵的实例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在學(xué)習(xí)linear regression時經(jīng)常處理的數(shù)據(jù)一般多是矩陣或者n維向量的數(shù)據(jù)形式,所以必須對矩陣有一定的認(rèn)識基礎(chǔ)。

numpy中創(chuàng)建單位矩陣借助identity()函數(shù)。更為準(zhǔn)確的說,此函數(shù)創(chuàng)建的是一個n*n的單位數(shù)組,返回值的dtype=array數(shù)據(jù)形式。其中接受的參數(shù)有兩個,第一個是n值大小,第二個為數(shù)據(jù)類型,一般為浮點型。單位數(shù)組的概念與單位矩陣相同,主對角線元素為1,其他元素均為零,等同于單位1。而要想得到單位矩陣,只要用mat()函數(shù)將數(shù)組轉(zhuǎn)換為矩陣即可。

>>> import numpy as np

>>> help(np.identity)

Help on function identity in module numpy:

identity(n, dtype=None)

Return the identity array.

The identity array is a square array with ones on

the main diagonal.

Parameters

----------

n : int

Number of rows (and columns) in `n` x `n` output.

dtype : data-type, optional

Data-type of the output. Defaults to ``float``.

Returns

-------

out : ndarray

`n` x `n` array with its main diagonal set to one,

and all other elements 0.

Examples

--------

>>> np.identity(3)

array([[ 1., 0., 0.],

[ 0., 1., 0.],

[ 0., 0., 1.]])

>>> np.identity(5)

array([[1., 0., 0., 0., 0.],

[0., 1., 0., 0., 0.],

[0., 0., 1., 0., 0.],

[0., 0., 0., 1., 0.],

[0., 0., 0., 0., 1.]])

>>> A = np.mat(np.identity(5))

>>> A

matrix([[1., 0., 0., 0., 0.],

[0., 1., 0., 0., 0.],

[0., 0., 1., 0., 0.],

[0., 0., 0., 1., 0.],

[0., 0., 0., 0., 1.]])

矩陣的運算中還經(jīng)常使用對角陣,numpy中的對角陣用eye()函數(shù)來創(chuàng)建。eye()函數(shù)接受五個參數(shù),返回一個單位數(shù)組。第一個和第二個參數(shù)N,M分別對應(yīng)表示創(chuàng)建數(shù)組的行數(shù)和列數(shù),當(dāng)然當(dāng)你只設(shè)定一個值時,就默認(rèn)了N=M。第三個參數(shù)k是對角線指數(shù),跟diagonal中的offset參數(shù)是一樣的,默認(rèn)值為0,就是主對角線的方向,上三角方向為正,下三角方向為負(fù),可以取-n到+m的范圍。第四個參數(shù)是dtype,用于指定元素的數(shù)據(jù)類型,第五個參數(shù)是order,用于排序,有‘C'和‘F'兩個參數(shù),默認(rèn)值為‘C',為行排序,‘F'為列排序。返回值為一個單位數(shù)組。

>>> help(np.eye)

Help on function eye in module numpy:

eye(N, M=None, k=0, dtype=, order='C')

Return a 2-D array with ones on the diagonal and zeros elsewhere.

Parameters

----------

N : int

Number of rows in the output.

M : int, optional

Number of columns in the output. If None, defaults to `N`.

k : int, optional

Index of the diagonal: 0 (the default) refers to the main diagonal,

a positive value refers to an upper diagonal, and a negative value

to a lower diagonal.

dtype : data-type, optional

Data-type of the returned array.

order : {'C', 'F'}, optional

Whether the output should be stored in row-major (C-style) or

column-major (Fortran-style) order in memory.

.. versionadded:: 1.14.0

Returns

-------

I : ndarray of shape (N,M)

An array where all elements are equal to zero, except for the `k`-th

diagonal, whose values are equal to one.

See Also

--------

identity : (almost) equivalent function

diag : diagonal 2-D array from a 1-D array specified by the user.

Examples

--------

>>> np.eye(2, dtype=int)

array([[1, 0],

[0, 1]])

>>> np.eye(3, k=1)

array([[ 0., 1., 0.],

[ 0., 0., 1.],

[ 0., 0., 0.]])

numpy中的diagonal()方法可以對n*n的數(shù)組和方陣取對角線上的元素,diagonal()接受三個參數(shù)。第一個offset參數(shù)是主對角線的方向,默認(rèn)值為0是主對角線,上三角方向為正,下三角方向為負(fù),可以取-n到+n的范圍。第二個參數(shù)和第三個參數(shù)是在數(shù)組大于2維時指定一個2維數(shù)組時使用,默認(rèn)值axis1=0,axis2=1。

>>> help(A.diagonal)

Help on built-in function diagonal:

diagonal(...) method of numpy.matrix instance

a.diagonal(offset=0, axis1=0, axis2=1)

Return specified diagonals. In NumPy 1.9 the returned array is a

read-only view instead of a copy as in previous NumPy versions. In

a future version the read-only restriction will be removed.

Refer to :func:`numpy.diagonal` for full documentation.

See Also

--------

numpy.diagonal : equivalent function

>>> help(np.diagonal)

Help on function diagonal in module numpy:

diagonal(a, offset=0, axis1=0, axis2=1)

Return specified diagonals.

If `a` is 2-D, returns the diagonal of `a` with the given offset,

i.e., the collection of elements of the form ``a[i, i+offset]``. If

`a` has more than two dimensions, then the axes specified by `axis1`

and `axis2` are used to determine the 2-D sub-array whose diagonal is

returned. The shape of the resulting array can be determined by

removing `axis1` and `axis2` and appending an index to the right equal

to the size of the resulting diagonals.

In versions of NumPy prior to 1.7, this function always returned a new,

independent array containing a copy of the values in the diagonal.

In NumPy 1.7 and 1.8, it continues to return a copy of the diagonal,

but depending on this fact is deprecated. Writing to the resulting

array continues to work as it used to, but a FutureWarning is issued.

Starting in NumPy 1.9 it returns a read-only view on the original array.

Attempting to write to the resulting array will produce an error.

In some future release, it will return a read/write view and writing to

the returned array will alter your original array. The returned array

will have the same type as the input array.

If you don't write to the array returned by this function, then you can

just ignore all of the above.

If you depend on the current behavior, then we suggest copying the

returned array explicitly, i.e., use ``np.diagonal(a).copy()`` instead

of just ``np.diagonal(a)``. This will work with both past and future

versions of NumPy.

Parameters

----------

a : array_like

Array from which the diagonals are taken.

offset : int, optional

Offset of the diagonal from the main diagonal. Can be positive or

negative. Defaults to main diagonal (0).

axis1 : int, optional

Axis to be used as the first axis of the 2-D sub-arrays from which

the diagonals should be taken. Defaults to first axis (0).

axis2 : int, optional

Axis to be used as the second axis of the 2-D sub-arrays from

which the diagonals should be taken. Defaults to second axis (1).

Returns

-------

array_of_diagonals : ndarray

If `a` is 2-D, then a 1-D array containing the diagonal and of the

same type as `a` is returned unless `a` is a `matrix`, in which case

a 1-D array rather than a (2-D) `matrix` is returned in order to

maintain backward compatibility.

If ``a.ndim > 2``, then the dimensions specified by `axis1` and `axis2`

are removed, and a new axis inserted at the end corresponding to the

diagonal.

Raises

------

ValueError

If the dimension of `a` is less than 2.

See Also

--------

diag : MATLAB work-a-like for 1-D and 2-D arrays.

diagflat : Create diagonal arrays.

trace : Sum along diagonals.

Examples

--------

>>> a = np.arange(4).reshape(2,2)

>>> a

array([[0, 1],

[2, 3]])

>>> a.diagonal()

array([0, 3])

>>> a.diagonal(1)

array([1])

A 3-D example:

>>> a = np.arange(8).reshape(2,2,2); a

array([[[0, 1],

[2, 3]],

[[4, 5],

[6, 7]]])

>>> a.diagonal(0, # Main diagonals of two arrays created by skipping

... 0, # across the outer(left)-most axis last and

... 1) # the "middle" (row) axis first.

array([[0, 6],

[1, 7]])

The sub-arrays whose main diagonals we just obtained; note that each

corresponds to fixing the right-most (column) axis, and that the

diagonals are "packed" in rows.

>>> a[:,:,0] # main diagonal is [0 6]

array([[0, 2],

[4, 6]])

>>> a[:,:,1] # main diagonal is [1 7]

array([[1, 3],

[5, 7]])

>>> A = np.random.randint(low=5, high=30, size=(5, 5))

>>> A

array([[25, 15, 26, 6, 22],

[27, 14, 22, 16, 21],

[22, 17, 10, 14, 25],

[11, 9, 27, 20, 6],

[24, 19, 19, 26, 14]])

>>> A.diagonal()

array([25, 14, 10, 20, 14])

>>> A.diagonal(offset=1)

array([15, 22, 14, 6])

>>> A.diagonal(offset=-2)

array([22, 9, 19])

以上這篇numpy創(chuàng)建單位矩陣和對角矩陣的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

總結(jié)

以上是生活随笔為你收集整理的python矩阵对角化_numpy创建单位矩阵和对角矩阵的实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。