簡體   English   中英

Python 中 for 循環中的列堆棧矩陣

[英]Column stack matrix in a for loop in Python

我有一些起始矩陣 A = [1,2,3,4] 並且我想實現一個循環,它將對起始矩陣施加功率。

for i in range(3,0,-1)
    A**i

發生此循環時,我還想將矩陣列堆疊為 B = [[1,8,27,64],[1,4,9,16],[1,2,3,4],[1, 1,1,1]]。 我該如何實施?

更新的答案:

我認為這段代碼實際上更好地回答了你的問題(例如使用生成器矩陣/行)。 列表理解邏輯沒有改變,我們在這里所做的只是定義x列表而不是從range生成。

starter_row = [1, 2, 3, 4]
num_rows = 4

result = [
    [x ** y for x in starter_row] for y in range(num_rows - 1, -1, -1)
]

print(result)

Output(下同):

[[1, 8, 27, 64], [1, 4, 9, 16], [1, 2, 3, 4], [1, 1, 1, 1]]

原答案:

您可以通過列表理解來實現這一點:

row_len = 4
num_rows = 4

result = [
    [x ** y for x in range(1, row_len + 1)] for y in range(num_rows - 1, -1, -1)
]

print(result)

Output:

[[1, 8, 27, 64], [1, 4, 9, 16], [1, 2, 3, 4], [1, 1, 1, 1]]

這種實現的好處是您可以根據需要動態調整尺寸。 如果你總是需要一個 X 乘 X 矩陣,你可以通過只為大小設置一個變量來簡化一點,列表理解將保持不變。

此外,如果您想反轉行的順序,只需將y范圍生成器更改為range(num_rows)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM