Python numpy数组根据行为每列分配值

use*_*627 0 python arrays numpy

我想为2D numpy数组中的每一行指定特定于行的值.特别是,每行应包含其行号倒数的值.换句话说,第1行中的所有列应具有值1,第2行中的所有列应为1/2,第3行中的所有列应为1/3,依此类推.我试过这个:

m = 3
n = 10

train = np.empty([n,m], float)

for curr_n in range(n):
    train[curr_n,:] = 1/(curr_n+1)

print train
Run Code Online (Sandbox Code Playgroud)

但输出是:

[[ 1.  1.  1.]
 [ 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.]]
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我在开始时使用了"float",但除了第一行之外,我仍然得到所有的0整数.

Joh*_*ell 5

Python 3中添加了隐式类型转换,因此您的原始代码将按原样运行:

from __future__ import division

m = 3
n = 10

train = np.empty([n,m], float)

for curr_n in range(n):
   train[curr_n,:] = 1/(curr_n+1)

print train
Run Code Online (Sandbox Code Playgroud)

有关该__future__模块的一些信息可以在官方文档未来模块中看到

或者,当sshashank124输入他的答案并放入评论时,您可以使用1.或1.0来强制浮动行为.