【发布时间】:2016-08-04 13:44:13
【问题描述】:
我有一个包含以下格式数据的文件文本:
垃圾&3.97&3.83&3.95&3.83&3.82
垃圾&4.92&4.81&4.88&4.81&4.81
垃圾&5.90&5.66&5.88&5.66&5.66
垃圾&--- & 6.05& 6.14& 6.05& 6.05
垃圾&6.42&6.26&6.46&6.26&6.26
垃圾&--- & 6.56& 6.63& 6.56& 6.56
我想将它们读入 numpy.ndarray 对象,以便将数字转换为浮点数对象,而 --- 保留为字符串对象。但是,以下代码创建了一个预期的 numpy.array 对象,但其中的所有内容都是一个字符串。
import numpy as np
wejscie = open('data.dat', 'r').readlines()
def fun1(x):
print x
if x.strip() == '---':
return str(x)
else:
return float(x)
dane = np.array([map(fun1, linijka.split('&')[1:]) for linijka in wejscie])
那么是否有可能让 numpy.ndarray 对象包含各种类型的数据?
【问题讨论】:
-
尝试
return np.nan而不是return str(x)。或其他一些将作为字符串占位符的浮点值。你不能像这样在数组中混合字符串和浮点数。