我對 Python 非常陌生,并詢問有關堆疊溢位的問題,因此對于任何格式錯誤,我深表歉意。
我正在使用 numpy 在 Python 中使用自相關陣列,并且我想在使用自相關的偶函式屬性的同時移動保存其值的陣列。例如,我有一個陣列說,
a = [0,1,2,3,4]
我希望能夠以這樣一種方式移動陣列,它移動但保持關于數字 0(或自相關的原點)對稱,并且看起來像這個序列:
a = [1,0,1,2,3]
a = [2,1,0,1,2]
a = [3,2,1,0,1]
a = [4,3,2,1,0]
有沒有簡單的方法來做到這一點?我想過使用 numpy 的滾動和翻轉功能,但它們似乎并沒有完全完成我想要做的事情。任何幫助/建議將不勝感激,謝謝!
編輯:
我的問題的一個更具代表性的示例是嘗試執行以下轉換,其中 1 表示函式原點的值:
a = [1, 0.34, 0.59, 0.40, 0.94]
a = [0.34, 1, 0.34, 0.59, 0.40]
a = [0.59, 0.34, 1, 0.34, 0.59]
a = [0.40, 0.59, 0.34, 1, 0.34]
a = [0.94, 0.40, 0.59, 0.34, 1]
再次感謝您的任何建議/幫助!
uj5u.com熱心網友回復:
您可以將 1 添加到出現在零之前或等于零的所有元素上,并將 -1 添加到零后面的所有元素。這是一種方法:
values = np.array([1, 0.34, 0.59, 0.40, 0.94])
a = np.array([0,1,2,3,4])
for i in range(a.size):
print(values[a])
a = 2 * (np.arange(a.size) <= a.argmin()) - 1
# [1. 0.34 0.59 0.4 0.94]
# [0.34 1. 0.34 0.59 0.4 ]
# [0.59 0.34 1. 0.34 0.59]
# [0.4 0.59 0.34 1. 0.34]
# [0.94 0.4 0.59 0.34 1. ]
或者,您可以使用np.arange負范圍并取絕對值:
for i in range(0, -5, -1):
print(np.abs(np.arange(i,i 5)))
您還可以一次性生成所有移位行的矩陣:
mat = np.eye(5, dtype=int).cumsum(0).cumsum(0)
mat = np.rot90(mat, k=2) - np.eye(5, dtype=int) - 1
[[0 1 2 3 4]
[1 0 1 2 3]
[2 1 0 1 2]
[3 2 1 0 1]
[4 3 2 1 0]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/389388.html
