2017-02-21 61 views
0

我碰巧遇到術語:的Python的numpy的循環

np.array([[0. for _ in range(20)] for _ in range(50)])

這讓我對20×50

然而矩陣中的所有0.0,我不喜歡這樣的句法。我想知道是否有其他方式做到這一點?我想0爲0.0(如浮點數)。

感謝

+0

嘗試'[在範圍[0.0對於i(3)]在範圍Ĵ(5)]]'。這是基本的Python列表理解。不要使用'_'來拋出。下一次嘗試'[[(I,J),其中i在範圍(3)]在範圍Ĵ(5)]]'。陣列的部分是一樣'np.array([[1,2],[3,4])'。 – hpaulj

回答

2
np.zeros((20, 50), dtype=np.float32) # or any other type; default: np.float64 

Link to the Docs

備註:沒有經驗的numpy的用戶將使用的方法在你的榜樣!

+0

我不會理解'for _ in' notation – wrek

+0

但這不是問題的關鍵嗎?你確實要求一個替代方案,我提出了最自然的方案。爲了回答您的其他問題:'''_'''什麼特別的。很多人用它來紀念這將nevber使用的變量。你可以把它叫做'''x'''太不改變任何東西!剩下的就是基本的python-stuff(迭代語法)。 – sascha

+1

@wrek你可以在這裏找到關於這方面的信息:http://stackoverflow.com/q/5893163/1394393。被接受的答案中的#3就是它在這裏使用的。 – jpmc26

1
>>> a=np.zeros([5,8]) 
>>> a 
array([[ 0., 0., 0., 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0., 0., 0., 0.]]) 
>>> type(a[1][1]) 
<type 'numpy.float64'> 
>>> 

您可以從代碼中看到默認格式爲float64。