【问题标题】:Numpy ndarray object with string and floating point number types in itNumpy ndarray 对象,其中包含字符串和浮点数类型
【发布时间】: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)。或其他一些将作为字符串占位符的浮点值。你不能像这样在数组中混合字符串和浮点数。

标签: python arrays numpy


【解决方案1】:

问题不在于fun1,而在于尝试将不同类型的元素插入到 numpy 数组中。

考虑以下几点:

>>> a = numpy.array([1])
>>> numpy.append(a,2)
array([1, 2])
>>> numpy.append(a,'b')
array(['1', 'b'],
  dtype='<U11')

Store different datatypes in one NumPy array?您可能会觉得这很有帮助

【讨论】:

    猜你喜欢
    • 2019-04-19
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    相关资源
    最近更新 更多