用另一个预定义列替换列

时间:2014-03-28 00:18:21

标签: python arrays numpy

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

1 个答案:

答案 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找到。