【问题标题】:How to do transpose of a 2D array in Python, without using the built-in transpose() function?如何在 Python 中转置二维数组,而不使用内置的 transpose() 函数?
【发布时间】:2021-03-03 06:35:02
【问题描述】:
import numpy as np

a5 = np.array([[1, 2, 3],[4, 5, 6]])
a = len(a5)              # rows of a5
b = len(a5[0])           # columns of a5
    
a6 = np.zeros([b, a])

for i in range(len(a5)):
    for j in range(len(a5[0])):
        a6[i][j] = a5[j][i]

但是,这给了我错误:- 索引 2 超出轴 0 的范围,大小为 2

【问题讨论】:

  • a, b = a5.shape 比您使用 len 更直接。如果您在范围表达式中使用这些变量,则应该更容易获得正确的索引顺序。

标签: python arrays numpy transpose


【解决方案1】:

我的代码基本保持不变:

import numpy as np

a5 = np.array([[1,2,3],[4,5,6]])
a5_transposed = np.zeros((3,2))

for i in range(len(a5)):
    for j in range(len(a5[0])):
        a5_transposed[j,i]=a5[i,j]

print(a5_transposed)

输出:

[[1. 4.]
 [2. 5.]
 [3. 6.]]

还有其他 numpy 技巧可以用函数来做,但我假设你想用 for 循环来做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-20
    • 2010-11-29
    • 2020-06-04
    • 2013-06-29
    • 1970-01-01
    相关资源
    最近更新 更多