提取2D陣列說我有其中包含16個元素的列表:Python化的方式從列表中
lst=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P']
此列表代表一個4×4陣列,其中所有元素已投入一維列表。在它的陣列形成它具有以下形式:
'A', 'B', 'C', 'D'
'E', 'F', 'G', 'H'
'I', 'J', 'K', 'L'
'M', 'N', 'O', 'P'
我想從這個1D列表作爲其總是開始於所述第一元件的另一1D列表中提取的子矩陣。
例如從LST中提取2×2矩陣:
'A', 'B', 'E', 'F'
或者從LST提取的3×3矩陣:
'A', 'B', 'C', 'E', 'F', 'G', 'I', 'J', 'K'
爲了實現這一點,我使用numpy的調整大小的列表到一個數組,提取子矩陣然後壓平再次下降:
import numpy as np
# The size of the matrix represented by lst
init_mat = 4
# Desired matrix size to extract
mat_size = 2
A = np.resize(lst,(init_mat,init_mat))
B = A[0:mat_size, 0:mat_size].flatten()
C = map(str,B)
這工作,但我不知道是否有這樣做的更pythonic的方法,因爲我不認爲這種方法將矩陣大小縮放。
我接受了這個取前三個項目每4項回答,因爲這是第一次,也是初步測試中最快的。謝謝,並感謝其他用戶的幫助。 – Yeti