我有一個 numpy 陣列,我將使用 np.ones((2,3)) 作為 MWE:
arr = [[1,1,1],
[1,1,1],
[1,1,1]]
我希望將行移動一個集合整數。這將隨著行增加。將第 1 行移 0 將第 5 行移 4
我想所有行的行長度都必須相等,列出這個:給出這個:
arr = [[1,1,1,0,0],
[0,1,1,1,0],
[0,0,1,1,1]]
這是一個 MWE,實際陣列取自 txt 檔案,最大為 (1000x96)。重要的值不僅是 1,而且是從 0->inf 的任何浮點數。
有沒有辦法做到這一點?
(額外資訊:這些資料用于 2D 熱圖繪制)
uj5u.com熱心網友回復:
我有以下解決方案:
import numpy as np
arr = [[1,1,1],
[1,1,1],
[1,1,1],
[1,1,1]]
arr = np.array(arr)
shift = 1
extend = shift*(np.shape(arr)[0]-1)
arr2 = np.zeros((np.shape(arr)[0],extend np.shape(arr)[1]))
for i,row in enumerate(arr):
arr2[i,(i*shift):(i*shift) 3] = row
print(arr2)
[[1. 1. 1. 0. 0. 0.]
[0. 1. 1. 1. 0. 0.]
[0. 0. 1. 1. 1. 0.]
[0. 0. 0. 1. 1. 1.]]
uj5u.com熱心網友回復:
假設一個具有任意值的陣列,您可以使用:
# add enough "0" columns for the shift
arr2 = np.c_[arr, np.zeros((arr.shape[0], arr.shape[0]-1), dtype=arr.dtype)]
# get the indices as ogrid
r, c = np.ogrid[:arr2.shape[0], :arr2.shape[1]]
# roll the values
arr2 = arr2[r, c-r]
使用的輸入:
arr = np.arange(1,10).reshape(3,3)
# array([[1, 2, 3],
# [4, 5, 6],
# [7, 8, 9]])
輸出:
array([[1, 2, 3, 0, 0],
[0, 4, 5, 6, 0],
[0, 0, 7, 8, 9]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/435729.html
下一篇:陣列從哪里獲得該值?
