python - numpy 从数组中删除列中第一个元素为 0 的列
问题描述
如果我有一个随机的 numpy 数组,如下所示:
myArray:
[0 , 0 , 51.78 , 17],
[823. , 91.31 , 51.63 , 13],
[819. , 93.03 , 51.77 , 52],
[776.32 , 93.85 , 52.02 , 34],
[755.12 , 92.48 , 49.955 , 77],
[739.01 , 97.68 , 50.75 , 48],
[760.17 , 98.26 , 51.1 , 12],
[780.37 , 98.82 , 51.52 , 13],
[740.34 , 98.5 , 50.48 , 17],
[768.65 , 104.86 , 51.71 , 97]]
我希望删除第一个元素为 0 的列,从而生成以下数组:
myArray:
[51.78 , 17],
[51.63 , 13],
[51.77 , 52],
[52.02 , 34],
[49.955 , 77],
[50.75 , 48],
[51.1 , 12],
[1.52 , 13],
[50.48 , 17],
[51.71 , 97]]
笔记
我知道np.delete
,我不确定是否可以在给定任何随机数组的情况下实现这一点。我正在寻找一种方法,如果给定一个第一行有 0 的随机数组,我可以对任何数组实现相同的函数,而不仅仅是上面给出的示例。
任何提示将非常感谢!
解决方案
使用布尔索引,条件是arr[0] != 0
:
arr[:, arr[0] != 0]
#array([[ 51.78 , 17. ],
# [ 51.63 , 13. ],
# [ 51.77 , 52. ],
# [ 52.02 , 34. ],
# [ 49.955, 77. ],
# [ 50.75 , 48. ],
# [ 51.1 , 12. ],
# [ 51.52 , 13. ],
# [ 50.48 , 17. ],
# [ 51.71 , 97. ]])
推荐阅读
- .net - System.IO.FileLoadException:给定的程序集名称或代码库无效
- android - 嵌套的 LinearLayout 拉伸
- python - 你如何循环使用其他数组的二维数组
- javascript - 在 JS-asp.net MVC 中使用 @Url.Action
- apache-spark - PySpark 超时尝试重新分区/写入镶木地板(期货在 [300 秒] 后超时)?
- reactjs - 在手动输入链接时保持“用户登录状态”
- multithreading - 将用户级线程映射到内核
- swift - 带有渐变和阴影的 UIView
- c# - 有没有办法使用通用主机从 asp.net 控制台应用程序将调试机密传递给 docker 容器?
- c# - 根据对象的枚举属性对列表进行排序