Numpy Delete不删除行



我一直在尝试编写一些代码,根据以下标准从我的2d数组中删除行:

  1. 每个单独的条目,因此没有患者只有一个条目(数组中同一患者的每一个条目的矩阵索引向上跳1)
  2. 第4条以上的所有条目。

如果满足这些条件中的任何一个,np.delete应该删除当前正在迭代的行(即索引的第i行)。

np.delete的输入是数组arr,行索引i和轴0(如果我没记错的话是行),映射到一个新数组new_arr。

从输出中可以看出,我的条件没有满足。例如,数组中的第4个人(Alex Maier)应该不再存在(作为一个单独的条目)。

非常感谢你的帮助。

代码(非常低效)如下:

#remove single entries

i = 0
for i in range(n-1): 
if arr[i][5] == 1:
if arr[i+1][5] == 1:
new_arr = np.delete(arr, i, axis = 0)
i = i+1
if arr[i][5]!=1:
if arr[i][5] >4:
new_arr = np.delete(arr, i , axis = 0)
i = i+1
else:
i = i+1

代码输出数组

检查下一个循环迭代开始时new_arr发生了什么。

然而,您选择的方法不是很有效,因为每次调用delete时都会复制数组。最好一次性完成,就像这样:
# creating bool arrays with the intended logic
lessThan5 = arr[:,5]<5
singleEntry = np.diff(arr[:,5],append=[1])!=0
# using np.where to filter
keepers = np.where(np.logical_and(lessThan5, singleEntry))
# index and save to new array
filtered_arr = arr[keepers[0],:]

相关内容

  • 没有找到相关文章

最新更新