4

このようなリストを変換する方法を探しています

[[1.1, 1.2, 1.3, 1.4, 1.5],
 [2.1, 2.2, 2.3, 2.4, 2.5],
 [3.1, 3.2, 3.3, 3.4, 3.5],
 [4.1, 4.2, 4.3, 4.4, 4.5],
 [5.1, 5.2, 5.3, 5.4, 5.5]]

このようなものに

[[(1.1,1.2),(1.2,1.3),(1.3,1.4),(1.4,1.5)],
 [(2.1,2.2),(2.2,2.3),(2.3,2.4),(2.4,2.5)]
 .........................................
4

4 に答える 4

12

次の行でそれを行う必要があります。

[list(zip(row, row[1:])) for row in m]

m最初の2次元リストはどこにありますか

コメントの2番目の質問の更新

2次元リストを転置(=列を行と交換)する必要があります。の転置を実現するPythonの方法mは次のzip(*m)とおりです。

[list(zip(column, column[1:])) for column in zip(*m)]
于 2012-08-27T13:49:29.537 に答える
5

質問者からのさらなるコメントに応えて、2つの答え:

# Original grid
grid = [[1.1, 1.2, 1.3, 1.4, 1.5],
 [2.1, 2.2, 2.3, 2.4, 2.5],
 [3.1, 3.2, 3.3, 3.4, 3.5],
 [4.1, 4.2, 4.3, 4.4, 4.5],
 [5.1, 5.2, 5.3, 5.4, 5.5]]


# Window function to return sequence of pairs.
def window(row):
    return [(row[i], row[i + 1]) for i in range(len(row) - 1)]

元の質問:

# Print sequences of pairs for grid
print [window(y) for y in grid]

更新された質問:

# Take the nth item from every row to get that column.
def column(grid, columnNumber):
    return [row[columnNumber] for row in grid]


# Transpose grid to turn it into columns.
def transpose(grid):
    # Assume all rows are the same length.
    numColumns = len(grid[0])
    return [column(grid, columnI) for columnI in range(numColumns)]


# Return windowed pairs for transposed matrix.
print [window(y) for y in transpose(grid)]
于 2012-08-27T13:45:21.750 に答える
1

別のバージョンはlambdamap

map(lambda x: zip(x,x[1:]),m)

m選択したマトリックスはどこにありますか。

于 2012-08-27T14:31:54.830 に答える
0

リスト内包表記は、リストを作成するための簡潔な方法を提供します:http: //docs.python.org/tutorial/datastructures.html#list-comprehensions

[[(a[i],a[i+1]) for i in xrange(len(a)-1)] for a in A] 
于 2012-08-27T13:52:58.540 に答える