【问题标题】:Python multi-dimensional notation transpose automaticallyPython多维符号自动转置
【发布时间】:2018-06-10 14:11:54
【问题描述】:

我有以下最小示例:

a = np.zeros((5,5,5))
a[1,1,:] = [1,1,1,1,1]
print(a[1,:,range(4)])

我希望输出一个包含 5 行 4 列的数组,其中我们在第二行有一个。相反,它是一个 4 行 5 列的数组,第二列是一个。这里发生了什么,我可以做些什么来获得我期望的输出?

【问题讨论】:

  • 请问我为什么会被否决?我的问题是不是太简单了或不恰当?

标签: python numpy


【解决方案1】:

这是一个混合基本索引和高级索引的示例,如 https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#combining-advanced-and-basic-indexing 中所述

切片维度已追加到末尾。

对于一个标量索引,这是此处描述的歧义的边缘情况。它已在之前的 SO 问题和一个或多个错误/问题中讨论过。

Numpy sub-array assignment with advanced, mixed indexing

在这种情况下,您可以用切片替换范围,并获得预期的顺序:

In [215]: a[1,:,range(4)].shape
Out[215]: (4, 5)               # slice dimension last
In [216]: a[1,:,:4].shape
Out[216]: (5, 4)
In [219]: a[1][:,[0,1,3]].shape
Out[219]: (5, 3)

【讨论】:

  • 是否还有一个简单的解决方法,如 a[1,:,: :4],以防我想采用 a[1,:,[0,1,3]] 等(即除最后一个索引中的一个值之外的所有值)
  • 完美,谢谢 非常有用且通俗易懂,谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-02-27
  • 2012-01-15
  • 1970-01-01
  • 2018-03-02
  • 1970-01-01
相关资源
最近更新 更多