[英]Recursively transposing columns from a given 2D-array to the rows of a new 2D-array
既然我來了,還不如得到我能得到的一切幫助。 注意: I believe this is different from other problems involving transposing with arrays.
就像在我的第一篇文章中一樣,我一直在研究 Python 中的遞歸,並一直試圖通過循環等使用通常簡單的解決方案來解決問題,而是使用遞歸算法來解決它們。
對於這個特殊的問題,給定一個以 NxN 網格格式化的 2D 數組,我想從該網格中取出每一列並將它們轉換為新網格的行。
例如,假設我傳入一個網格: [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
我的程序應該將列[1, 5, 9, 13]
設為新二維數組的行; 下面是一個可視化:
[[1, 2, 3, 4], [[1, 5, 9, 13],
[5, 6, 7, 8], ----> [2, 6, 10, 14],
[9, 10, 11, 12], ----> [3, 7, 11, 15],
[13, 14, 15, 16]] [4, 8, 12, 16]]
接下來是我嘗試使用幫助程序 function 提取每一列,並使用幫助程序創建需要傳遞給它的n
值:
def get_column(array, n):
base_val = array[0][n]
if len(array) == 1:
return [base_val]
else:
return [base_val] + get_column(array[1:], n)
def integer(grid):
return len(grid)
def transpose(grid, n = integer(grid), new_grid = []):
if n < len(grid):
new_grid.append(get_column(grid, n))
n += 1
return transpose(grid, n, new_grid)
else:
return new_grid
在我的main()
function 中,來自外部的唯一調用是對transpose()
function 的調用,它僅通過網格作為參數。
在 python 中,list 實際上被構造為一個動態數組。 這意味着您需要 O(n) 時間來訪問 n 元素。 因此,使用列表選擇方法進行轉置不會達到矢量化效果。
NumPy 的 transpose() 方法如何置換數組的軸?
已經解釋了numpy.transpose
為優化轉置操作所做的工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.