我有一個充滿浮點的numpy數組。我如何用np.inf*0
替換每個第5個值,以便每5個索引得到一個NaN
的值?Python:替換numpy數組的每個第5個值
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 ...])
等。
我有一個充滿浮點的numpy數組。我如何用np.inf*0
替換每個第5個值,以便每5個索引得到一個NaN
的值?Python:替換numpy數組的每個第5個值
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 ...])
等。
如何使用切片和跨步? L[::5]
需要每5元從列表L
:
>>> 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])
比@ 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])
這比@ mdml的答案更正確,因爲數組dtype是float,因此'np.nan'是守恆的。 – askewchan
他想改變'my_array [4 :: 5]' – stranac
@stranac:好點啊,沒有聽清楚他想跳過第4位。更新。 – mdml
使用'np.arange(20.)'而不是'np.array(range(20))'來避免創建一箇中間列表並使這些值實際爲'nan'而不是'-9223372036854775808'。因爲'np.nan'不是一個整數(如你的輸出中可以看到的那樣),所以'''使得dtype浮點數(或'np.arange(20,float)') – askewchan