Python:替换numpy数组的每个第5个值

时间:2013-11-27 19:45:24

标签: python numpy

我有一个装满花车的numpy数组。如何用np.inf*0替换每个第5个值,以便在每个第5个索引处获得NaN值?

my_array = np.array([5.0, 8.1, 3.2, 2.7, 8.4, 4.9 ...])

my_array = np.array([5.0, 8.1, 3.2, 2.7, NaN, 4.9 ...])

等等。

2 个答案:

答案 0 :(得分:7)

使用切片和跨步怎么样? L[::5]从列表L中获取每个第5个元素:

>>> my_array = np.arange(20.)
>>> my_array[4::5] = np.nan
>>> my_array
array([  0.,   1.,   2.,   3.,  nan,   5.,   6.,   7.,   8.,  nan,  10.,
        11.,  12.,  13.,  nan,  15.,  16.,  17.,  18.,  nan])

答案 1 :(得分:6)

比@ alko更简单,比@mdml的更正确。

import numpy

my_array = numpy.linspace(0, 1, 20)
my_array
#>>> array([ 0.        ,  0.05263158,  0.10526316,  0.15789474,  0.21052632,
#>>>         0.26315789,  0.31578947,  0.36842105,  0.42105263,  0.47368421,
#>>>         0.52631579,  0.57894737,  0.63157895,  0.68421053,  0.73684211,
#>>>         0.78947368,  0.84210526,  0.89473684,  0.94736842,  1.        ])

my_array[4::5] = numpy.nan
my_array
#>>> array([ 0.        ,  0.05263158,  0.10526316,  0.15789474,         nan,
#>>>         0.26315789,  0.31578947,  0.36842105,  0.42105263,         nan,
#>>>         0.52631579,  0.57894737,  0.63157895,  0.68421053,         nan,
#>>>         0.78947368,  0.84210526,  0.89473684,  0.94736842,         nan])