【问题标题】:Create numpy array from python list从 python 列表创建 numpy 数组
【发布时间】:2017-10-26 13:35:57
【问题描述】:

我有一个 python 列表

l = [1,2,3,4,5]

我需要创建一个类似

的数组
y_pred = array('B', [1, 2, 3, 4, 5])

这样我就可以使用比较它了

print accuracy_score(y_test, y_pred)

我尝试使用

import numpy as np
l = [1,2,3,4,5]
y_pred = array('B',l)

但它正在显示

TypeError: 数据类型不理解

【问题讨论】:

  • 你的问题还真不清楚,要命名数组吗?像熊猫Series?为什么不直接使用专门为此设计的 pandas?
  • 对不起...你想做什么?
  • 我需要使用 numpy 来完成。是的,我想创建一个结构化数组。
  • @cᴏʟᴅsᴘᴇᴇᴅ:从列表创建结构化数组
  • dtype 的 y_test 是什么?要创建结构化数组,您需要提供元组列表和匹配的 dtype。

标签: python arrays list numpy


【解决方案1】:

您需要在构造结构化数组时提供dtype 参数。见:structured arrays。

import numpy as np
x = np.array([(1,2.,'Hello'), (2,3.,"World")],
          dtype=[('foo', 'i4'),('bar', 'f4'), ('baz', 'S10')])

我不知道你到底想做什么,但也许就是这样:

import numpy as np
l = [1,2,3,4,5]
y_pred = np.array(np.array(l),dtype=[('B',np.int32)])

# >>> y_pred
# array([(1,), (2,), (3,), (4,), (5,)],
#       dtype=[('B', '<i4')])

【讨论】:

    【解决方案2】:

    首先np.array 接受一个像列表这样的对象和一个dtype。

    在,

     array('B', [1, 2, 3, 4, 5])
    

    它以“B”作为对象,但[1,2,3,...] 不符合dtype 的条件。

    列表中的简单数组是:

    In [15]: np.array([1,2,3,4,5])
    Out[15]: array([1, 2, 3, 4, 5])
    

    你说你想要structured array。但要做到这一点,您需要指定一个复合 dtype,并且数据必须是匹配的元组列表。

    In [14]: np.array([("B", 2), ("C", 3)], dtype='S5,int')
    Out[14]: 
    array([(b'B', 2), (b'C', 3)],
          dtype=[('f0', 'S5'), ('f1', '<i4')])
    

    但该结构与您的数据、一个字符串和 5 个数字的列表不匹配。你想要一个 1 行(记录)还是 5 行的数组?

    如果要将y_pred 与另一个数组进行比较,则需要匹配其dtype 和shape。什么是y_test?

    【讨论】:

      猜你喜欢
      • 2014-04-23
      • 2011-01-07
      • 1970-01-01
      • 2017-02-19
      • 2020-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多