>>> 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]它必须输出矩阵的第一列
需要你的帮助....谢谢!!
答案 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]]