2012-12-04 27 views
2

如何創建一個(48,64)numpy的陣列是這樣的:如何創建與行之間等差一個numpy的二維數組?

i,  i,  i, .....,i 
i+0.1, i+0.1,..........,i+0.1 
i+0.2, i+0.2,..........,i+0.2 
. 
. 
. 
. 
i+6.3, i+6.3,..........,i+6.3 

0.1是行之間的固定差。

我與JoshAdel的答案完全解決了這個問題,

但即對固定的區別是列之間?如何。

i,i+0.1,i+0.2.....i+6.3 
i,i+0.1,i+0.2.....i+6.3 
. 
. 
. 
i,i+0.1,i+0.2.....i+6.3 

非常感謝!

回答

2
import numpy as np 
i = 10.0 
a = np.empty((64,48)) 
a.fill(i) 
a += np.arange(0,6.4,0.1)[:,np.newaxis] 

Out[12]: 
array([[ 10. , 10. , 10. , ..., 10. , 10. , 10. ], 
     [ 10.1, 10.1, 10.1, ..., 10.1, 10.1, 10.1], 
     [ 10.2, 10.2, 10.2, ..., 10.2, 10.2, 10.2], 
     ..., 
     [ 16.1, 16.1, 16.1, ..., 16.1, 16.1, 16.1], 
     [ 16.2, 16.2, 16.2, ..., 16.2, 16.2, 16.2], 
     [ 16.3, 16.3, 16.3, ..., 16.3, 16.3, 16.3]]) 

有兩點要注意:

  • numpy的的形狀慣例是(nrow,ncolumn),所以你需要的形狀爲(64,48)不是(48,64)的陣列你有你的問題。

  • 有多種方法可以做到這一點,但我選擇使用numpy的的broadcasting符號。

  • 你可以更簡潔寫這篇文章,但我把它分解成用於說明目的獨立的步驟。

+0

另一question..how我能做到逐列? – oops

0

一種不同的方式來做到這一點(只是爲了好玩)使用tiledoc)

c = 10 + np.cumsum(np.ones(64))*.1 - .1 
a = np.tile(c,(48,1)).T 
相關問題