Pythonic 方式在不丢失维度的情况下建立索引

标签 python numpy indexing slice dimensions

data = np.zeros((5, 16, 16))

我想访问这个 numpy 数据数组的大小为 1 的切片。定义我不想要什么可能会有所帮助:

>>> data[2].shape
(16, 16)

相反,我想保持维度相同。这里想到了几种方法:

>>> np.expand_dims(data[2], 0).shape
(1, 16, 16)

>>> data[2:3].shape
(1, 16, 16)

>>> data[None, 2].shape
(1, 16, 16)

这些选项中哪一个更Pythonic,或者这里有更好的解决方案吗?

最佳答案

您还可以使用具有单个元素的索引列表来完成此操作:

>>> data[[2]].shape
(1, 16, 16)

至于哪一个更Pythonic,那是基于观点的。

<小时/>

注意:此方法将创建数据的副本,而不是相同数据的 View ,因为任意索引可能不会产生连续的 View 。这在问题Avoid copying when indexing a numpy arrays using lists中有详细解释。

关于Pythonic 方式在不丢失维度的情况下建立索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59733444/

相关文章:

python - 如何在 lambda 项目的 python 中正确导入模块

python - theano中卷积神经网络的无监督预训练

python - Pandas :获取相关性高的列的组合

python - 有没有一种优雅的方法来检查数组中的哪些元素位于另一个容器中?

科学堆栈存储库中的 Python 相对导入与绝对导入

mysql - 在 MySQL 中的 FK 之前创建索引

sql - 仅在一张表上重建 SQL 索引

java - neo4j - 属性自动索引器不存储值

python - 要将 Turbolinks 5 与 Django 一起使用,如何在使用 redirect() 时自动包含 Turbolinks-Location header ?

python - 合并 Pandas 中的数据框