2013-03-09 91 views

回答

1

很难确切地告诉你问什么,但是这将创建一个字符串numpy的载体,每一个细胞系:

import numpy as np 

with open("file.ext") as f: 
    a = np.array(f.readlines()) 

这可能,比如说进行修改,浮点的文件空间分隔值:

import numpy as np 

with open("file.ext") as f: 
    a = np.array([map(float, line.split()) for line in f]) 

让我们的论点分解到array()澄清什么是怎么回事。

  • [line for line in f]将相当于f.readlines() - 它 创建的字符串,在f每行一个列表。
  • [line.split() for line in f]制作一个二维字符串列表。 f中的每一行都将空格处的split 转换为字符串列表。
  • Numpy旨在处理数值,但不是字符串。所以我们需要把每个字符串子列表变成一个浮点列表。 map将相同的功能应用于列表中的每个元素(在这种情况下为float),因此map(float, line.split())会将字符串列表转换为浮点列表。
  • 因此,[map(float, line.split()) for line in f]创建浮动列表的列表 - 每行一个列表,其中浮动在空间处分开。然后发送到array(),它知道如何处理列表清单。

也看看genfromtxtloadtxt家庭的Numpy功能。

+0

为什么地图(浮动和不映射(字符串?) – Superdooperhero 2013-03-09 22:11:32

+0

@Superdoohero - 'line.split()'将一个字符串(行)变成一个字符串列表。我们需要把这个字符串列表变成一个浮点列表(使用'map'),以便Numpy可以处理它们.Numpy并不是真正用来处理字符串数组的。 – 2013-03-09 22:13:12