【问题标题】:Numpy, assign new values to a existing ndarrayNumpy,为现有的ndarray分配新值
【发布时间】:2012-05-17 08:14:37
【问题描述】:

我是 NumPy 的新手,一个问题阻止了我.. --- 我想更改一个 ndarray 的值:

这是调试信息。

(Pdb) Nodes[0,0]['f'] = np.array([i/9.0 for i in  range(9)])
(Pdb) print Nodes[0,0]['f']
[  0.00000000e+00   0.00000000e+00   5.67382835e+10   4.58280650e-41
   1.00030523e-36   0.00000000e+00   1.00030523e-36   0.00000000e+00
   2.28153811e-40]
(Pdb)

为什么Node[0,0]['f']的值没有变化?

【问题讨论】:

  • 需要更多信息:您发布的内容并没有表明 Nodes[0,0]['f'] 的值没有改变,只是它没有变成什么你想要它。 Nodes[0,0] 和 Nodes[0,0]['f'] 的值和类型是什么?你能做一个short example 显示我们可以剪切和粘贴的问题吗?

标签: python numpy


【解决方案1】:

尝试改用Nodes['f'][0,0] = numpy.array([i/9.0 for i in range(9)])

import numpy
Nodes = numpy.ndarray(shape=(1,1), dtype=[('f', (float, 9))])
print Nodes[0,0]['f']
# [  0.00000000e+000   2.10042365e-316   2.44222340e-316   6.90749588e-310
#    2.10041417e-316   4.22653002e-317   2.76341350e-316   6.90749588e-310
#    3.95252517e-322]
Nodes[0,0]['f'] = numpy.array([i/9.0 for i in range(9)])
print Nodes[0,0]['f']
# [  0.00000000e+000   2.10042365e-316   2.44222340e-316   6.90749588e-310
#    2.10041417e-316   4.22653002e-317   2.76341350e-316   6.90749588e-310
#    3.95252517e-322]
Nodes['f'][0,0] = numpy.array([i/9.0 for i in range(9)])
print Nodes[0,0]['f']
# [ 0.          0.11111111  0.22222222  0.33333333  0.44444444  0.55555556
#   0.66666667  0.77777778  0.88888889]

我不确定为什么会有差异,但它可能与this question有关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-09
    • 2019-11-19
    • 2018-10-10
    • 1970-01-01
    • 2014-09-03
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多