python - 我可以在一个 numpy 操作中使用 "rotate"和 slice 吗?

标签 python arrays numpy

我有这样的数据:

[[[1, 2, 3]
  [4, 5, 6]]
 [[7, 8, 9]
  [0, 1, 2]]]

我需要把它变成这个“形状”:

[[[1, 4], [2, 5], [3, 6]]
 [[7, 0], [8, 1], [9, 2]]]

到目前为止,我拥有的最好的方法是:

for i in range(2):
    pairs = tuple(
        array[i, :, j] for j in range(3)  # ---axis-2-length---
    )
    print(pairs)

生产:

([1, 4], [2, 5], [3, 6])
([7, 0], [8, 1], [9, 2])

虽然这样可以完成工作,但需要大量解释 Python,尤其是随着这些数据集的增长。所以我想知道我是否可以通过花哨的索引或转置或其他我的 numpy-fu 还不足以想象我自己的方式来完成这项工作。

有谁知道如何使用 numpy 更优雅地完成这项工作?

最佳答案

ndarray.transpose 转置将在这里工作。

>>> x.transpose(0, 2, 1)
array([[[1, 4],
        [2, 5],
        [3, 6]],

       [[7, 0],
        [8, 1],
        [9, 2]]])

关于python - 我可以在一个 numpy 操作中使用 "rotate"和 slice 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53200551/

相关文章:

python - 使用变量初始化解释器

python - 如何获取 CherryPy 版本

Python:为什么 np.where 不适用于两个条件?

python - Django 从其他博客导入帖子

python undefined variable

java - 驾驶员考试多项选择数组while循环提示学生答题方法

C:常量结构数组中的外部常量整数

javascript - 如何更改具有特定 url 的所有 href?

python - 直方图给出了概率密度函数的奇怪值

python - 在 python 中以交互方式显示 matplotlib 中的图形