我試圖用多維數組來解決問題,而不是求助於for
循環,以獲得性能提升,但在索引編制時遇到問題。用於多維陣列/矩陣的三角形索引和求和軸的選擇
我試過各種使用np.newaxis
的排列,但似乎無法實現以下功能。
問題:1
部分)採取的M×N×N的陣列稱爲a
,並且對於每個所述M方陣的,設置上三角矩陣的元素作爲其負值。
第2部分)將M個矩陣(形狀爲N×N)中的每個矩陣中的所有元素求和,返回一個具有M個元素的一維數組。我們稱這個數組爲b
。
嘗試性解決方案
下面是使用循環我MWP /企圖(這工作,但我寧願找一個充分陣列/基於矩陣的方法
a = np.array(
[[[ 0, 1],
[ 5, 0]],
[[ 0, 3],
[ 2, 0]]])
第1部分):
triangular_upper_idx = np.triu_indices_from(a[0])
for i in range(len(a)):
a[i][triangular_upper_idx] *= -1
a
結果:
array([[[ 0, -1],
[ 5, 0]],
[[ 0, -3],
[ 2, 0]]])
第2部分):
b = np.zeros(len(a))
for i in range(len(a)):
b[i] = np.sum(a[i])
b
結果:
array([ 4., -1.])
注: 我看到的這個話題(Triangular indices for multidimensional arrays in numpy),但解決了類似的問題有嵌套的for循環...我感覺numpy可能會提供更高效,更智能的基於陣列的解決方案?
任何指導將不勝感激。
感謝
完美的感謝。我沒有意識到np.sum可以爲它的軸創建一個數組參數。這很好。 – IanRoberts