我正在使用带有numpy版本3.5
的Python 1.11.3
,我面临着一个可能很难重现的非常奇怪的问题。
我从arr1
加载了Numpy数组pd.DataFrame
,np.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])
有没有解释为什么会发生这种情况?
答案 0 :(得分:1)
numpy.delete
的第二个参数不是要删除的值。它是要删除的索引(或索引)。看一下docstring中的示例,例如:
1
该函数调用中的值axis=0
与{{1}}结合,表示"删除索引为1"的行。