假設我有一個像這樣一個列表的列表組成的矩陣:列表(沒有numpy的)的列表的子矩陣
>>> LoL=[list(range(10)) for i in range(10)]
>>> LoL
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]
假設,另外,我有稱爲相同結構的numpy的矩陣LoLa
:
>>> LoLa=np.array(LoL)
使用numpy的,我能得到這個矩陣的小矩陣是這樣的:
>>> LoLa[1:4,2:5]
array([[2, 3, 4],
[2, 3, 4],
[2, 3, 4]])
我可以replic吃純Python像這樣的numpy的矩陣片段:
>>> r=(1,4)
>>> s=(2,5)
>>> [LoL[i][s[0]:s[1]] for i in range(len(LoL))][r[0]:r[1]]
[[2, 3, 4], [2, 3, 4], [2, 3, 4]]
這是不是世界上最容易讀,也不是最有效的:-)
問:是否有一個更簡單的方法(在純Python)將任意矩陣切片爲子矩陣?
第二部分*完全*偷走了我的答案! :-))+1 – dawg 2013-03-27 02:21:11
乾杯,@drewk;下一個是你的:) – unutbu 2013-03-27 02:25:01