Python - 通过列表列表迭代作为矩阵(切片)

时间:2015-02-23 02:16:51

标签: python arrays list numpy slice

我想遍历列表列表。 迭代遍历列表中的每个列表。

list=[[0.9 0.8 0.1 0.2 0.5 ][0.5 0.3 0.2 0.1 0.7 ][0.6 0.1 0.3 0.2  0.9][0.3 0.7 0.4 0.1 0.8]]

因此迭代遍历内部的每个列表,仅迭代到第三个位置,例如:

list=[[0.9 0.8 0.1][0.5 0.3 0.2][0.6 0.1 0.3][0.3 0.7 0.4 ]]

有人告诉我,怎么办? 这是我的代码:

list=[]
i=0
j=0
data=open('BDtxt.txt','r')
for line in data.xreadlines():
    lista.append(line.strip().split())
while i<len(lista):
    while j < len(lista[i]):
        print lista[j]
        j+=1
    i+=1

,输出为:

['0.9', '0.8', '0.1', '0.2', '0.5']
['0.5', '0.3', '0.2', '0.1', '0.7']
['0.6', '0.1', '0.3', '0.2', '0.9']
['0.3', '0.7', '0.4', '0.1', '0.8']

我希望输出为

[0.9 0.8 0.1]
[0.5 0.3 0.2]
[0.6 0.1 0.3]
[0.3 0.7 0.4]

1 个答案:

答案 0 :(得分:3)

这称为采用数组的切片(不是迭代或循环)。使用numpy.array。要读入您的csv文件,请使用numpy.genfromtxt()pandas.read_csv() - 对于那些,SO上有大量重复的问题。

import numpy as np
a = np.array([[0.9,0.8,0.1,0.2,0.5], [0.5,0.3,0.2,0.1,0.7], [0.6,0.1,0.3,0.2,0.9], [0.3,0.7,0.4,0.1,0.8]])

a[:,0:3]
array([[ 0.9,  0.8,  0.1],
       [ 0.5,  0.3,  0.2],
       [ 0.6,  0.1,  0.3],
       [ 0.3,  0.7,  0.4]])