python - 如何仅删除一次在数组中重复的最小元素
问题描述
假设我们有 x = np.array([[1,2,3,4],[5,6,5,5]])。我想删除每个数组中的 min 元素,即使重复只删除一次,这样我就可以获得 x = np.array([[2,3,4],[6,5,5]])。我该怎么做?
我可以成功删除 min,但它会删除所有 min 元素并给我 np.array([2,3,4,6]) 并且可能需要在此之后执行 np.reshape ,但这是一个细节。我使用了类似的东西:
x[np.where(x != np.min(x,axis=1,keepdims=True))]
解决方案
尝试这个:
x = np.array([[1, 2, 3, 4], [5, 6, 5, 5]])
def delete_first_min(arr: np.array):
min_indexes = np.where(arr == np.min(arr))[0]
first_min_index = min_indexes[0]
return np.delete(arr, first_min_index)
# short: return np.delete(arr, np.where(arr == np.min(arr))[0][0])
x = np.apply_along_axis(delete_first_min, 1, x)
print(x)
>> [[2 3 4]
>> [6 5 5]]
np.where(arr == np.min(arr))[0]
返回具有最小值的元素的索引数组,因此[0]
再次对其下标会返回第一个 min 元素。
推荐阅读
- c - 从 C 中的 uint64 获取一个 28 字节的数字
- mysql - 定期将数据从 SQL 镜像到 NoSQL 的最佳方法?
- c - 运行小型 C 程序需要超过 2 分钟?
- rust - 如何使用 serde_json 动态构建 json 数组或对象?
- javascript - 在代码中,我认为 ''i'' 应该是 =1 的第一个值怎么来的 0
- python - 使用 python onnxruntime 进行预测时出错
- angular - 如何在材质对话框(MatDialog)上自定义 ngx-material-timepicker 的 css z-index(更多 1000)?
- javascript - 如何在日期选择器中仅显示 3 个月作为当前日期的下拉列表,当当前月份完成时,我们将显示即将到来的 3 个月
- c++ - C ++中的零填充数组
- react-native - 在 React Native (expo) 中的 flatlist 元素上定位绝对子元素