3 回答

TA貢獻(xiàn)1775條經(jīng)驗 獲得超8個贊
這是一個可以完成這項工作的快速單行文字:
np.array([np.arange(i, i+3) for i in range(1, 6)])
其中3
是列數(shù)或每個數(shù)組中的元素數(shù),6
是要執(zhí)行的迭代次數(shù) - 或者在本例中是要創(chuàng)建的數(shù)組數(shù);這就是輸出中有 5 個數(shù)組的原因。
輸出:
array([[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7]])

TA貢獻(xiàn)1802條經(jīng)驗 獲得超10個贊
更改代碼,類似這樣的事情可以工作:
two_d_array = np.array([[(y*3)+x+1 for x in range(3)] for y in range(5)])
>>> [[1,2,3],[4,5,6],...]
two_d_array = np.array([[y+x+1 for x in range(3)] for y in range(5)])
>>> [[1,2,3],[2,3,4],...]

TA貢獻(xiàn)2019條經(jīng)驗 獲得超9個贊
你已經(jīng)得到了一些很好的理解答案,所以這里有一些 numpy 解決方案。
簡單加法:
np.arange(1, 6)[:, None] + np.arange(3)
瘋狂的跨步技巧:
base = np.arange(1, 8)
np.lib.stride_tricks.as_strided(base, shape=(5, 3), strides=base.strides * 2).copy()
重塑累積和:
base = np.ones(15)
base[3::3] = -1
np.cumsum(base).reshape(5, 3)
添加回答
舉報