【问题标题】:Numpy / Uncertain about equivalence between np.swapaxes(array, 1,2) and np.swapaxes(array, 2,1)?Numpy / 不确定 np.swapaxes(array, 1,2) 和 np.swapaxes(array, 2,1) 之间的等价性?
【发布时间】:2020-05-20 18:33:30
【问题描述】:

我对@9​​87654321@ 的使用并不那么自在,并放下我的骄傲来问这个可能很愚蠢的问题。

考虑到 3D 数组(例如 (2, 4, 3)),np.swapaxes(array, 1,2)np.swapaxes(array, 2,1) 给出相同的结果是否正常?

array = np.array([[[1.0, -1.0, -2.0],[-1.0, -2.0, -10.0],[-2.0, -10.0, 11.0],[-10.0, 11.0, 4.0]],
                  [[1.1, -1.1, -2.1],[-1.1, -2.1, -10.1],[-2.1, -10.1, 21.1],[-10.1, 21.1, 2.1]]])

swapaxed1 = np.swapaxes(array, 1,2)
swapaxed2 = np.swapaxes(array, 2,1)
swapaxed1 == swapaxed2

array 的尺寸会有所不同吗?

感谢您帮助我们更好地理解 swapaxes 在这种情况下。最好的,

【问题讨论】:

  • 这是一个对称操作,它总是会给出相同的结果。

标签: python arrays numpy


【解决方案1】:

在多维数组中,一组索引(非负整数)用于引用该数组中的特定值。维数决定了唯一指定元素所需的此类整数的数量。因此,对于 m x n x p 3-D 数组,您需要一组整数 (i, j, k)。需要注意的是,这是一组有序整数,这意味着它们的排列顺序很重要,因为每个整数都与数组的一个维度相关联。

swapaxes 所做的只是为数组中的特定值更改这些索引的顺序。如果交换轴 0 和 1,则原来由唯一整数集合 (i, j, k) 引用的 值现在将由 (j, i, k) 的集合引用) :前两个索引被交换,因为它们绑定的轴已被交换。

因此您明白为什么它总是必须相同:它是一个交换,并且只有参考索引的顺序被交换。 (至少在这种情况下,最重要的是 numpy 为实现这一点而实际执行的所有操作。)在二维中,交换轴操作仅相当于转置。

this SO 讨论中了解更多信息。特别是,GoingMyWay 的回答可能会帮助您更好地对其进行可视化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-30
    • 2016-09-16
    • 1970-01-01
    • 2012-05-21
    • 2019-01-28
    • 2016-05-12
    • 2015-12-22
    • 2019-06-18
    相关资源
    最近更新 更多