2014-03-28 15 views
0

目前我有一個非常簡單的問題。我使用Python 2.7並具有以下功能。用另一個預定義列替換列

from pylab import * 
import numpy as np 

Nbod = 55800 
Nsteps = 7 
r = zeros(shape=(Nbod, Nsteps)) 
r_i = np.random.uniform(60.4,275,Nbod) 

r[1:Nbod][0] = r_i 

我試圖用r_i,以取代第一列r[1:end][0]。我從我的ipython筆記本編譯器收到以下錯誤。

ValueError        Traceback (most recent call last) 
/home/john/<ipython-input-6-1b7fabbd1fa9> in <module>() 
----> 1 r[:][0] = r_i #impose the initial conditions of radial and 
     2    #theta coordinates at the first time step 


ValueError: operands could not be broadcast together with shapes (7) (55800) 

我試着調換r[0]載體,但仍然得到了同樣的問題。我不太確定我是否在此論壇上按照正確的格式提問,因此請留下評論,我會進行相應的編輯。

回答

1

我想你想要這樣的:

>>> import numpy as np 
>>> Nbod = 55800 
>>> Nsteps = 7 
>>> r = np.zeros(shape=(Nbod, Nsteps)) 
>>> r_i = np.random.uniform(60.4,275,Nbod)^C 

#Notice that we slice the 2nd column and replace it with r_i 
>>> r[:,1] = r_i 

#Examine the first row 
>>> r[0] 
array([ 0.  , 105.6566683, 0.  , 0.  , 
      0.  , 0.  , 0.  ]) 

切片一個numpy的陣列一樣的目錄列表是不恰當的位置,請確保您使用numpy的限幅操作的效率和額外的功能。關於切片的更多信息可以參見here

相關問題