Numpy:np.delete没有删除数组中的值

时间:2017-12-12 17:23:33

标签: numpy debugging python-3.5

我正在使用带有numpy版本3.5的Python 1.11.3,我面临着一个可能很难重现的非常奇怪的问题。

我从arr1加载了Numpy数组pd.DataFramenp.delete似乎不起作用:

ipdb> np.delete(arr1, 53)
array([  53,   84,  140,  220,  295,  413,  478,  558,  596,  875,  986,
       1103, 1487, 1559, 1704, 1924, 2009, 2044, 2301, 2410, 2514, 2746,
       3432, 3443, 3466, 4054, 4125, 4249, 4309, 4395, 4429, 4544, 4764,
       4787, 5208, 5299, 5340, 5447, 5680, 5899, 5977, 6254, 6256, 6276,
       6412, 6518, 6538, 6584, 6587, 6591, 6592, 6593, 6594, 6661, 6662,
       6663, 6664, 6665, 6666, 6667, 6668, 6669, 6670, 6671, 6672, 6673,
       6686, 6698, 6699, 6700, 6770, 6796, 6848, 6881, 6917, 6975, 7079,
       7121, 7188, 7402, 7510, 8200, 8217, 8479, 8569, 8759, 8925, 9152,
       9190, 9243, 9423, 9485, 9583, 9681, 9690, 9692, 9710, 9793, 9811])

ipdb> arr1.dtype
dtype('int64')

ipdb> np.delete(arr1, arr1)
array([  53,   84,  140,  220,  295,  413,  478,  558,  596,  875,  986,
       1103, 1487, 1559, 1704, 1924, 2009, 2044, 2301, 2410, 2514, 2746,
       3432, 3443, 3466, 4054, 4125, 4249, 4309, 4395, 4429, 4544, 4764,
       4787, 5208, 5299, 5340, 5447, 5680, 5899, 5977, 6254, 6256, 6276,
       6412, 6518, 6538, 6584, 6587, 6591, 6592, 6593, 6594, 6661, 6662,
       6663, 6664, 6665, 6666, 6667, 6668, 6669, 6670, 6671, 6672, 6673,
       6686, 6698, 6699, 6700, 6770, 6796, 6848, 6881, 6917, 6975, 7079,
       7121, 7188, 7402, 7510, 8200, 8217, 8479, 8569, 8759, 8925, 9152,
       9190, 9243, 9423, 9485, 9583, 9681, 9690, 9692, 9710, 9793, 9811])

但是,当我在np.delete上致电np.arange时,它可以正常工作:

ipdb> np.delete(np.arange(15), np.arange(13))
array([13, 14])

有没有解释为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

numpy.delete的第二个参数不是要删除的。它是要删除的索引(或索引)。看一下docstring中的示例,例如:

1

该函数调用中的值axis=0与{{1}}结合,表示"删除索引为1"的行。