将数组列表放入矩阵中

时间:2014-05-22 09:40:15

标签: python-2.7 matrix

希望这是一个简单的问题...... 我有两个数组:

>>> 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个
 2
 4
 5
 7
 3]

>>>print X[:1]  

[34个
 31个
 34个
 32个
 45个
 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]它必须输出矩阵的第一列
需要你的帮助....谢谢!!

2 个答案:

答案 0 :(得分: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]])

答案 1 :(得分: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]]