【问题标题】:Convert list of list into numpy array without commas between each list element将列表列表转换为numpy数组,每个列表元素之间没有逗号
【发布时间】:2017-07-18 11:43:18
【问题描述】:

我有一个如下所示的列表:a = [[1,1],[1,1]]

我想将其转换为如下所示的 numpy 数组:a = [[1,1] [1,1]]

有什么方法可以实现吗?即使type(X_train) = numpy.ndarray,我似乎也无法模仿keras.datasets.imdb 给出的X_train 数据集结构。

【问题讨论】:

  • a = [[1,1] [1,1]] 似乎不是一个有效的语法,你为什么要这样做
  • 你所要求的没有意义。 [[1,1] [1,1]] 不是一个有效的 Python 数据结构,看起来更像是 list 而不是 numpy.array
  • numpy.array(a) 有什么问题
  • @PatrickHaugh 但每个元素之间都有逗号...
  • @ZdaR 显然type(a) 返回 numpy.ndarray。我正在尝试将我的列表转换为特定的 numpy 数组,以便我可以将其输入到循环神经网络中的嵌入层中。

标签: python python-2.7 list numpy keras


【解决方案1】:

您需要更好地解释keras 目标。逗号的存在与否表明了数据结构的性质,但它实际上只是一种显示约定。

Python 列表一直使用逗号分隔符:

In [751]: alist = [[1,2],[3,4]]
In [752]: alist
Out[752]: [[1, 2], [3, 4]]

一个 numpy 数组可以带逗号也可以不带逗号。

In [753]: arr=np.array(arr)
In [754]: arr
Out[754]: 
array([[1, 2],
       [3, 4]])
In [755]: str(arr)
Out[755]: '[[1 2]\n [3 4]]'
In [756]: print(arr)
[[1 2]
 [3 4]]

为了获得逗号和空格的组合,我必须创建一个对象 dtype 数组:

In [757]: a=np.empty((2,), dtype=object)
In [758]: a
Out[758]: array([None, None], dtype=object)
In [759]: print(a)
[None None]
In [760]: a[0]=[1,2]
In [761]: a[1]=[3,4]
In [762]: a
Out[762]: array([[1, 2], [3, 4]], dtype=object)
In [763]: print(a)
[[1, 2] [3, 4]]

我可以想象keras 包构造了这样一个数组,但我不会向初学者推荐它。


来自 keras imdb 文档

X_train, X_test:序列列表,即索引列表(整数)。如果 nb_words 参数是特定的,则最大可能的索引值为 nb_words-1。如果指定了 maxlen 参数,则可能的最大序列长度为 maxlen。

它表示列表列表,但它可能是列表的对象 dtype 数组。听起来这些内部列表的长度不同,这就解释了为什么它不是二维数组。

 np.array([[1,2], [3,4,5]]) 

产生这样一个数组。

【讨论】:

  • 我想投票,但我不能。非常感谢您的回复。只是一个问题:如果我将 X_train 分配给一个简单的numpy.array(),没有您提到的那些对象 dtype 列表数组,并将其用作我的 keras 循环神经网络的输入,是否可以?
  • 我不能肯定地说,但它很有可能会起作用。如果我的猜测是正确的,keras 可能只是在数组上迭代,每次都期待一个列表或数组。
猜你喜欢
  • 2018-07-20
  • 2020-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-21
  • 1970-01-01
  • 2015-12-20
相关资源
最近更新 更多