【问题标题】:Python How to convert ['0.12' '0.23'] <class 'numpy.ndarray'> to a normal numpy arrayPython 如何将 ['0.12' '0.23'] <class 'numpy.ndarray'> 转换为普通的 numpy 数组
【发布时间】:2019-05-21 03:19:48
【问题描述】:

我正在使用一个包,它为我从 csv 文件中获取值。如果我打印出结果,我会得到['0.12' '0.23']。我检查了类型,即&lt;class 'numpy.ndarray'&gt; 我想将其转换为像[0.12, 0.23] 这样的numpy 数组。 我试过np.asarray(variabel),但这并没有解决问题。

【问题讨论】:

  • 它们是一样的吗? a = np.array([1, 2, 3]); print(type(a))。你的恰好包含字符串。只需执行a = a.astype(np.float64)。你还没有说明问题是什么。
  • @roganjosh:感谢您的评论,但a = a.astype(np.float64) 没有添加逗号。它生成[1 2 3]
  • 有什么问题?这完全是视觉的;列表实际上也不包含逗号,只是为了让您可以看到各个元素。您已经 拥有 一个普通的 numpy 数组,除了转换类型之外,实际上没有任何转换。我唯一可以建议的另一件事是转换后的a.tolist(),但是....好吧,这不再是一个数组。
  • @roganjosh:如果我想用它计算它会给我一个错误TypeError: only size-1 arrays can be converted to Python scalars
  • 那么您完全误诊了您的问题,并且问题中缺少解决实际问题的必要信息。

标签: python numpy type-conversion


【解决方案1】:

解决方案

import numpy as np
array = array.astype(np.float)


# If you are just initializing array you can do this
ar= np.array(your_list,dtype=np.float)

【讨论】:

    【解决方案2】:

    了解csv 的读取方式可能会有所帮助。但无论出于何种原因,它似乎创建了一个带有字符串 dtypenumpy 数组:

    In [106]: data = np.array(['0.12', '0.23'])
    In [107]: data
    Out[107]: array(['0.12', '0.23'], dtype='<U4')
    In [108]: print(data)
    ['0.12' '0.23']
    

    这种数组的str 格式省略了逗号,repr 显示保留它。

    列表等价物也用逗号显示:

    In [109]: data.tolist()
    Out[109]: ['0.12', '0.23']
    

    我们称其为 numpy 数组,但从技术上讲,它属于 numpy.ndarray

    In [110]: type(data)
    Out[110]: numpy.ndarray
    

    它可以转换为浮点数组:

    In [111]: data.astype(float)
    Out[111]: array([0.12, 0.23])
    

    它仍然是ndarray,只是dtype 不同。您可能需要在numpy 文档中阅读有关dtype 的更多信息。

    错误:

    如果我想用它计算它会给我一个错误 TypeError: only size-1 arrays can be convert to Python scalars

    有不同的来源。 data 有 2 个元素。您没有显示生成此错误的代码,但我们经常在绘图调用中看到这一点。该参数应该是一个数字(通常是一个整数),而您的数组,即使是数字dtype)也是两个数字。

    【讨论】:

      猜你喜欢
      • 2011-06-13
      • 1970-01-01
      • 2019-01-05
      • 2015-02-05
      • 1970-01-01
      • 2015-08-20
      • 2012-01-17
      • 2012-01-31
      • 1970-01-01
      相关资源
      最近更新 更多