2015-05-25 57 views
2

我有一個很長的一維數組。我想創建一個數組,這是np.arange()的結果應用於數組中的每個值加上一些常數。 E.g如果常數= 3,我的陣列看起來像向量化np.arange或等效

[1,2,3,4,5] 

我想獲得

[[1,2,3] 
[2,3,4] 
[3,4,5] 
[4,5,6] 
[5,6,7]] 

np.arange()僅接受標量作爲參數。我玩了np.vectorize()有點不成功。很明顯,我可以用循環或列表完成此操作,然後將其轉換爲數組,但我想知道是否有一個好的numpy-only解決方案。

回答

5

您可以使用添加和廣播:

>>> x = np.array([1,2,3,4,5]) 
>>> constant = 3 
>>> x[:,None] + np.arange(constant) 
array([[1, 2, 3], 
     [2, 3, 4], 
     [3, 4, 5], 
     [4, 5, 6], 
     [5, 6, 7]]) 

這也可以寫成np.add.outer(x, np.arange(constant))