[英]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.