17

この行列の転置を取得する方法..これを行うためのより簡単なアルゴリズムの方法...

最初の質問:

 Input  a=[[1,2,3],[4,5,6],[7,8,9]]
 Expected output a=[[1, 4, 7], [2, 5, 8], [3, 6, 9]] 

2 番目の質問:

Zipは、以下の出力を提供します。配列に要素がいくつあるかわからない場合、どのように圧縮できますか。この場合、3つの要素a [0]、a [1]、a [2]を知っていますが、どうすればできますか[n]個の要素を圧縮します

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

7 に答える 7

29

使用zip(*a):

>>> zip(*a)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

仕組み: zip(*a) は zip(a[0], a[1], a[2]) と同じです。

于 2013-11-10T09:16:27.557 に答える
20

質問の答え:

>>> import numpy as np
>>> first_answer = np.transpose(a)
>>> second_answer = [list(i) for i in zip(*a)]

手伝ってくれたafgに感謝

于 2012-04-16T07:06:09.830 に答える
3

numpy.transpose を使用できます

numpy.transpose

>>> import numpy
>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> numpy.transpose(a)
array([[1, 4, 7],
       [2, 5, 8],
       [3, 6, 9]])
于 2012-04-16T07:05:17.373 に答える
0
  1. ジッパーなし

     def transpose(A):
        res = []
    
        for col in range(len(A[0])):
            tmp = []
            for row in range(len(A)):
                tmp.append(A[row][col])
    
            res.append(tmp)
    
        return res
    
  2. ジップの使用

    def transpose(A):
        return map(list, zip(*A))
    
于 2021-08-13T13:11:12.883 に答える
0

適切な変数を置き換えてこれを試してください

import numpy as np

data = ((0, 1, 2), (3, 4, 5), (6, 7, 8), (9, 10, 11))

data_transpose = np.transpose(data) # replace with your code
print(data_transpose)
于 2020-08-08T22:50:34.863 に答える