python - 与 numpy 操作 a[:] and a[. ..] 混淆

标签 python numpy

在numpy中,存在一些切片操作,例如a[1:3,3:5],但是我对a[:]和a[...]操作感到困惑,我是python新手,可以有人解释一下它们之间有什么区别吗?

最佳答案

... 是省略号,在纯 Python 中它基本上是一个非运算符。它用作代码的占位符,例如本例中:

while True:
    ...

在 numpy 中,它具有类似的用途,它是不切片运算符。由于 numpy 同时支持多个切片,这可能很有用。例如,要获取立方体的不同边:

In [1]: import numpy

In [2]: cube = numpy.arange(3**3).reshape(3, 3, 3)

In [3]: cube
Out[3]:
array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8]],

       [[ 9, 10, 11],
        [12, 13, 14],
        [15, 16, 17]],

       [[18, 19, 20],
        [21, 22, 23],
        [24, 25, 26]]])

In [4]: cube[0, ..., 0]
Out[4]: array([0, 3, 6])

In [5]: cube[..., 0, 0]
Out[5]: array([ 0,  9, 18])

In [6]: cube[0, 0, ...]
Out[6]: array([0, 1, 2])

应该注意的是,... 在功能上与上述情况下的 : 相同,但对于多维对象可能有所不同:

In [7]: cube[..., 0]
Out[7]:
array([[ 0,  3,  6],
       [ 9, 12, 15],
       [18, 21, 24]])

In [8]: cube[:, 0]
Out[8]:
array([[ 0,  1,  2],
       [ 9, 10, 11],
       [18, 19, 20]])

在多维对象中,... 根据需要插入 : 多次以达到完整维度

关于python - 与 numpy 操作 a[:] and a[. ..] 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47975339/

相关文章:

python - 如何为 click 中的组操作创建异常(exception)

Python Pandas 和 NumPy.where 行数不匹配的行为

python - 使用来自 pandas DataFrame 的数据拟合 sklearn 的 SVM 分类器

python - TypeError : A sparse matrix was passed, 但需要密集数据(多标签 K 最近邻)

python - 这个类看起来很愚蠢吗?

python - 如何使用 pyspark 从 CSV 设置 Spark 中的 parquet 中正确的数据类型

python - Uwsgi 失败并返回 : Py_Initialize: Unable to get the locale encoding

python - 根据具有值的列的数量转置 DataFrame

python - 使用Python+NumPy+Numba时如何加速数组访问

python - 如何在 Cython 中构建 iostream 对象(例如 cout)并将其传递给 C++ 函数?