【问题标题】:Numpy fancy indexing question about specific array and its final shape?关于特定数组及其最终形状的 Numpy 花式索引问题?
【发布时间】:2020-01-11 15:05:05
【问题描述】:
X = np.arange(12).reshape((3, 4)) => shape (3,4)
row = np.array([0, 1, 2])
row[:, np.newaxis] => shape (3,1)

X[row[:, np.newaxis], :]  => shape (3,1,4)

当根据“广播规则”广播的索引的形状应该是最终形状时,谁能解释这个最终形状是如何发生的?

【问题讨论】:

  • 第二个索引是一个切片,而不是另一个数组。广播不适用。

标签: python numpy indexing reshape


【解决方案1】:
  • X[i, :]X 的第 i 行作为形状数组 (X.shape[1],)

  • X[[i], :]X 的第 i 行作为形状数组 (1, X.shape[1])

  • X[[[i]], :]X 的第 i 行作为形状数组(1, 1, X.shape[1])

  • X[[[[i]]], :]X 的第 i 行作为形状数组(1, 1, 1, X.shape[1])

  • ...

如你所见,这样你只是引入了额外的维度,输出数组的形状是索引数组的形状+X的行的形状。

现在,row[:, np.newaxis]array([[0], [1], [2]]),形状为 (3,1),X 的每一行的形状为 (4,)。所以X[[[0], [1], [2]], :] 将三行 X 打包成形状为(3,1) + (4,) = (3, 1, 4) 的数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    相关资源
    最近更新 更多