2013-03-09 86 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