python - Numpy根据条件将3d数组减少到2d
问题描述
我有一个像这样的 3d 数组:
array([[[ 0, 1],
[ 0, 0]],
[[ 0, 0],
[ 6, 7]]])
我想要做的是将它减少为这样的二维数组:
array([[1, 0],
[0, 1]])
如果原始的每个子数组具有非零元素,则为 1,如果相应子数组的所有元素都为零,则为 0。
我怎样才能干净地做到这一点,没有循环?
解决方案
您可以numpy.ndarray.any
沿最后一个轴 ( axis=-1
) 使用:
>>> arr = np.array([[[ 0, 1],
[ 0, 0]],
[[ 0, 0],
[ 6, 7]]])
>>> arr.any(axis=-1).astype(int)
array([[1, 0],
[0, 1]])
推荐阅读
- python-3.x - Inception v3 retraining with tensorflow 问题如何释放 retrained_graph.pb
- pandas - 如何将 3 列中的日期时间值合并为 pandas 数据框中的单列?
- angular - 如何在Angular中的可拖动包装列表中分配视图之间的剩余空间?
- nginx - 通过其他代理工作的 Nginx
- rest - .Net Framework 4.8 中的授权使用 OpenIdentity4 返回 Unauthorized
- python - 将 QR 解码解决方案从 Python 转换为 C# (EU DGC)
- xaudio2 - XAudio2:如何获取 AudioSystem 的当前时间
- mongodb - 在 MongoDB 文档中插入更多属性
- c++ - 类metod内的映射中未初始化的全局变量
- apache-spark - 在 Python 中处理从 Kafka 主题传入的 json 表格数据