2014-05-22 41 views
0

希望它是簡單的問題...... 我有兩個數組:把數組列表中的矩陣

>>> X1=[1,2,4,5,7,3,] 
>>> X2=[34,31,34,32,45,41] 

我希望把這些陣列在一個稱爲X矩陣:

X=[[1 23] 
    [2 31] 
    [4 34] 
    [5 32] 
    [7 45] 
    [3 41]] 

期望輸出是這樣的:

>>>Print X[:0] 

[1
3]

>>>print X[:1] 

[34
41]

我的問題它把所述兩個數組到矩陣中,我之前使用的是

X=[[X1[i],X2[i]] for i in range(len(X1))] 

但是,當我嘗試打印

>>>print X[:0] 

我有錯誤,如:

TypeError: list indices must be integers, not tuple 

真正我想要的是當我打印
打印X [0]就必須輸出[1,23]
print x [:0]它必須輸出矩陣的第一列
Ne編輯你的幫助....謝謝!

回答

0

你不能以這種方式索引列表。您的結果矩陣只是一個列表。您可以創建一個數據框來獲取功能,你似乎想:​​

import pandas as pd 
X1=[1,2,4,5,7,3,] 
X2=[34,31,34,32,45,41] 
matrix = [[x, y] for x, y in zip(X1, X2)] 
df = pd.DataFrame(matrix) 
print df[0] 
print df[1] 

打印:

0 1 
1 2 
2 4 
3 5 
4 7 
5 3 
Name: 0, dtype: int64 
0 34 
1 31 
2 34 
3 32 
4 45 
5 41 
Name: 1, dtype: int64 

或者創建一個numpy.matrix和切它,你想要它:

n_matrix = np.matrix(zip(X1,X2)) 
print n_matrix[0:, 0] 
print n_matrix[0:, 1] 

打印

[[1] 
[2] 
[4] 
[5] 
[7] 
[3]] 
[[34] 
[31] 
[34] 
[32] 
[45] 
[41]] 
0

在第一部分,你可以使用zip如果元組是確定您的需求:

>>> X1=[1,2,4,5,7,3,] 
>>> X2=[34,31,34,32,45,41] 
>>> list(zip(X1, X2)) 
[(1, 34), (2, 31), (4, 34), (5, 32), (7, 45), (3, 41)] 

或:

>>> [[a, b] for a, b in zip(X1, X2)] 
[[1, 34], [2, 31], [4, 34], [5, 32], [7, 45], [3, 41]] 

我無法重現你的最後一個錯誤:

>>> X=[[X1[i],X2[i]] for i in range(len(X1))] 
>>> print X[:0] 
[] 
您可能試過寫:
>>> print X[:,0] 

使用numpy的的矩陣有效期:

>>> import numpy as np 
>>> x= np.matrix([[a, b] for a, b in zip(X1, X2]) 
>>> print x 
matrix([[ 1, 34], 
     [ 2, 31], 
     [ 4, 34], 
     [ 5, 32], 
     [ 7, 45], 
     [ 3, 41]]) 

>>> x[:,0] 
matrix([[1], 
     [2], 
     [4], 
     [5], 
     [7], 
     [3]]) 
>>> x[:,1] 
matrix([[34], 
     [31], 
     [34], 
     [32], 
     [45], 
     [41]])