首頁 >後端開發 >Python教學 >如何使用高級 Numpy 索引高效滾動矩陣行?

如何使用高級 Numpy 索引高效滾動矩陣行?

DDD
DDD原創
2024-10-21 13:40:03468瀏覽

How to Efficiently Roll Matrix Rows with Advanced Numpy Indexing?

使用Numpy 高級索引進行高效矩陣行滾動

問題陳述:

給定一個矩陣和一個滾動值:

A = np.array([[4, 0, 0],
              [1, 2, 3],
              [0, 0, 5]])

r = np.array([2, 0, -1])

expected_result = np.array([np.roll(row, x) for row,x in zip(A, r)])

# [[0 0 4]
#  [1 2 3]
#  [0 5 0]]

給定一個矩陣和一個滾動值:

給定一個矩陣和一個滾動值:

<code class="python">import numpy as np

rows, column_indices = np.ogrid[:A.shape[0], :A.shape[1]]

# Ensure negative shift to keep column_indices valid
r[r < 0] += A.shape[1]
column_indices = column_indices - r[:, np.newaxis]

result = A[rows, column_indices]</code>
給定一個矩陣和一個滾動值:

給定一個矩陣和一個滾動值數組,任務是根據對應的滾動值獨立滾動矩陣的每一行。例如:

  • 使用Numpy 高階索引的解:
  • 獨立捲動矩陣行的有效方法是利用Numpy 的高階索引功能:
解釋:

使用np.ogrid 建立索引網格,表示矩陣的行和列。 調整捲動值以確保負移位,從而產生有效的列索引。 從列索引網格中減去滾動值,沿行廣播滾動值。 使用進階索引檢索滾動值原始矩陣 A 中的元素。 這種方法允許高效且簡潔的行滾動,繞過顯式 for 迴圈並利用 Numpy 強大的向量化運算。是否為最快的方法取決於陣列尺寸和特定的系統配置。

以上是如何使用高級 Numpy 索引高效滾動矩陣行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn