【问题标题】:What is the difference between numpyArr[:,:,:,c] and numpyArr[...,c]?numpyArr[:,:,:,c] 和 numpyArr[...,c] 有什么区别?
【发布时间】:2019-09-13 12:05:55
【问题描述】:

我一直在 Coursera 上学习深度学习课程。当我做作业时,我在 github 上看到了一段代码。

1. numpyArr[...,c]
2. numpyArr[:,:,:,c]

这些切片方法有什么区别?

【问题讨论】:

  • 语法无效 - 确保 mylist 真的 list
  • 你能链接到你看到这段代码的特定 Github 页面吗?
  • 第二个是关于多维数组的吧? mylist [:,:,:,c] 实际上是一个 4D 数组,而不是列表。
  • @meowgoesthedog 语法 非常好。 含义不适用于list

标签: python numpy multidimensional-array slice numpy-ndarray


【解决方案1】:

如果两个数组都有 4 个维度,则结果没有差异。但是,如果您并不真正关心维数,则使用省略号 (...) 仅表示任意维数。所以第一个版本的意思是:

"获取所有维度,但从最后一个(无论最后一个是什么)只获取条目c"

第二个意思是

"获取维度 0、1、2 完整且仅来自维度 3 的条目c

这对于 4 维数组是相同的,但对于 5 维数组是不同的。

对于多维数组,可能会更有趣:

arr = np.random.uniform(size=(3, 3, 3, 3, 3))
print(arr[1, ..., 2, 3].shape)

这意味着:获取第一个维度的第二个条目,以及最后两个维度的条目 2 和 3,以及介于两者之间的所有内容。

Some years ago, this has already been asked,但需要知道... 是省略号。

【讨论】:

    猜你喜欢
    • 2011-04-05
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2021-08-31
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多