目前我有一个非常简单的问题。我正在使用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[1:end][0]
替换为r_i
。我的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]
向量,但仍然遇到了同样的问题。我不太确定我在这个论坛上是否遵循了正确的格式问题,所以请留言,我会相应地进行编辑。
答案 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找到。