python numpy矩阵索引_python – Numpy中的矩阵索引
索引后查看形狀:
In [295]: A=np.matrix([1,2,3])
In [296]: A.shape
Out[296]: (1, 3)
In [297]: A[0]
Out[297]: matrix([[1, 2, 3]])
In [298]: A[0].shape
Out[298]: (1, 3)
這種行為的關(guān)鍵是np.matrix總是2d.所以即使你選擇一行(A [0,:]),結(jié)果仍然是2d,形狀(1,3).因此,您可以根據(jù)需要串起盡可能多的[0],并且不會(huì)發(fā)生任何新的事情.
你想用A [0] [0]完成什么?與A [0,0]相同?
對(duì)于基本np.ndarray類,這些是等價(jià)的.
請(qǐng)注意,Python解釋器將索引轉(zhuǎn)換為__getitem__調(diào)用.
A.__getitem__(0).__getitem__(0)
A.__getitem__((0,0))
[0] [0]是2個(gè)索引操作,而不是一個(gè).所以第二個(gè)[0]的效果取決于第一個(gè)產(chǎn)生的效果.
對(duì)于數(shù)組A [0,0]等價(jià)于A [0,:] [0].但對(duì)于矩陣,您需要:
In [299]: A[0,:][:,0]
Out[299]: matrix([[1]]) # still 2d
=============================
“An array of itself”, but I doubt anyone in their right mind would choose that as a model for matrices in a scientific library.
What is, then, the logic to the output I obtained? Why would the first element of a matrix object be itself?
In addition, A[0,:] is not the same as A[0]
鑒于這些評(píng)論,請(qǐng)?jiān)试S我提出一些澄清.
A [0]并不意味著“返回第一個(gè)元素”.這意味著沿第一軸選擇.對(duì)于1d數(shù)組,表示第1項(xiàng).對(duì)于2d數(shù)組,它表示第1行.對(duì)于ndarray,它將是一個(gè)1d數(shù)組,但對(duì)于矩陣,它是另一個(gè)矩陣.因此對(duì)于2d數(shù)組或矩陣,A [i,:]與A [i]是相同的.
A [0]不只是返回自己.它返回一個(gè)新矩陣.不同的身份:
In [303]: id(A)
Out[303]: 2994367932
In [304]: id(A[0])
Out[304]: 2994532108
它可能具有相同的數(shù)據(jù),形狀和步幅,但它是一個(gè)新對(duì)象.它與許多行矩陣的第i行一樣獨(dú)特.
大多數(shù)獨(dú)特的矩陣活動(dòng)定義在:numpy / matrixlib / defmatrix.py中.我打算建議查看矩陣.__ getitem__方法,但大多數(shù)動(dòng)作都是在np.ndarray .__ getitem__中執(zhí)行的.
為了方便老派的MATLAB程序員,np.matrix類被添加到numpy中. numpy數(shù)組幾乎可以有任意數(shù)量的維度,0,1,…. MATLAB只允許2,盡管2000左右的版本將其推廣到2或更多.
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python numpy矩阵索引_python – Numpy中的矩阵索引的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python列表去括号_python 去
- 下一篇: python webservice接口测