替换多维数组的元素

时间:2017-03-20 22:08:16

标签: python numpy multidimensional-array

我正在尝试用列表中的元素替换29 x 1矩阵的某些元素。

import numpy as np

initAmount = np.array([[0 for i in range(29)]])
initialAmount = np.ndarray.transpose(initAmount)
ind = [0.04, 0.02, 0.03]
#ind = [1,2,3]
initialAmount[0,0] = float(ind[0])
initialAmount[1,0] = float(ind[1])
initialAmount[2,0] = float(ind[2])
print(initialAmount)

不幸的是,这不符合预期。运行代码后的initialAmount应为[[0.04],[0.02],[0.03],[0],...],而不是[[0],[0],[0] ....],其中是我得到的结果。当我的列表ind = [1,2,3]时,代码工作正常。所以,我假设精度有误,但我不知道如何解决这个问题。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

只需在内置numpy.zeros中使用dtypeshape参数即可使您的数组运行,从而大大简化您要完成的工作:

>>> init = np.zeros((29, 1), dtype=float)
>>> ind = [0.04, 0.02, 0.03]
>>> init[0,0] = ind[0]
>>> init[1,0] = ind[1]
>>> init[2,0] = ind[2]
>>> init
array([[ 0.04],
       [ 0.02],
       [ 0.03],
       [ 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.  ]])
>>>

注意,默认情况下np.zeros使用float dtype。但要明确表达并不痛苦。