Numpy:从由数组组成的ndarray创建deque

3

我有一个以numpy ndarray形式存在的数组:

inputs = np.array([[1],[2],[3]])

我怎样才能将这个ndarray转化为一个deque (collections.deque),以便保留结构(数组的数组),并且可以使用普通的deque方法,如popleft()append()?例如:
inputs.popleft()
->>> [[2],[3]]

inputs.append([4])
->>> [[2],[3], [4]]

挑剔一点,inputs 是一个二维数组,形状为 (3,1)。我们通常不将其描述为数组的数组。尽管当您对其进行迭代时,确实会得到 1 个元素数组。inputs.tolist() 是一个纯嵌套列表。list(inputs) 是一个数组列表。 - hpaulj
2个回答

2

我认为你可以直接将inputs传递给deque

from collections import deque

i = deque(inputs)

In [1050]: i
Out[1050]: deque([array([1]), array([2]), array([3])])

In [1051]: i.popleft()
Out[1051]: array([1])

In [1052]: i
Out[1052]: deque([array([2]), array([3])])

In [1053]: i.append([4])

In [1054]: i
Out[1054]: deque([array([2]), array([3]), [4]])

稍后,当您想要将numpy.array返回时,只需将deque传回numpy即可。

np.array(i)

Out[1062]:
array([[2],
       [3],
       [4]])

1

嗯,我认为你可以这样做:

inputs = np.array([[1],[2],[3]])
inputs = collections.deque([list(i) for i in inputs])
inputs.append([4])
inputs.popleft()

编辑。


inputs = np.array([1],[2],[3]) results in: ValueError: only 2 non-keyword arguments accepted - wiki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接