我有一段只能處理大小為 20 的陣列的 C 代碼。我的儀器輸出的陣列遠小于函式所需的陣列。是否有一個 numpy 或數學函式可以將陣列“放大”到任何特定大小,同時保持其結構完整性?例如:
我有一個 8 元素陣列,它基本上是一個兩個斜坡“鋸齒”,這意味著它的值是:[1 2 3 4 1 2 3 4]
我需要的 C 代碼是一個 20 元素陣列。所以我可以通過用 "0"s 填充原始陣列的線性間隔來縮放它,例如:
[1,0,0,2,0,0,3,0,0,4,0,0,1,0,0,2,0,0,3,0]
所以它最多可以添加 20 個元素。我認為這個程序與“抽取”相反。(我很抱歉,我正在簡化這個程序,這樣會更容易理解)
uj5u.com熱心網友回復:
根據您的示例,我想可以調整以下方法以執行您想要的操作:
- 帶 0 的上采樣:
upsampled_l = [[i, 0, 0] for i in l]作為l您的初始串列 - 使用如何從串列串列中制作平面串列中
flat_l = flatten(upsampled_l)的方法 展平陣列?例如 - 獲取預期長度
final_l = flat_l[:20]
例如,以下代碼給出了您在示例中給出的輸出:
l = [1, 2, 3, 4, 1, 2, 3, 4]
upsampled_l = [[i, 0, 0] for i in l]
flat_l = [item for sublist in upsampled_l for item in sublist]
final_l = flat_l[:20]
但是,最終串列中缺少初始串列的最后一個元素(第二個 4)。也許值得在兩者之間([i, 0]而不是[i, 0, 0])和最后做一個 0 進行上采樣final_l.extend([0 for _ in range(20 - len(final_l))])。
希望這可以幫助!
uj5u.com熱心網友回復:
您可以通過將零添加為另一個軸,然后展平來以單線方式對其進行管理:
sm = np.array([1, 2, 3, 4, 1, 2, 3, 4])
np.concatenate([np.reshape(sm, (8, 1)), np.zeros((8, 3))], axis=1).flatten()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/474849.html
上一篇:如何解決R中的數學序列?
