取数组的第n个项

时间:2015-02-24 11:51:51

标签: python arrays numpy nested-lists

我有一个看起来像这样的数组(将有超过5个术语,但我只使用5个术语作为例子):

states = numpy.array([  [0, 0, 0],
                        [0, 0, 1],
                        [0, 2, 0],
                        [0, 1, 0],
                        [0, 1, 1]]

我似乎无法找到一种方法来只接受这个数组的前n个项。

例如,如果n = 3,那么:

states = numpy.array([  [0, 0, 0],
                        [0, 0, 1],
                        [0, 2, 0],]

我尝试过使用循环和list.append,但我一直收到错误

  

"列表索引必须是整数,而不是元组"

因为它返回一个如下所示的数组:

[[array([0, 0, 0])], [array([0, 0, 1])], [array([0, 2, 0])]

必须有一个简单的方法来做到这一点但我已经找了好几个小时而且找不到一个!

感谢您的帮助!!

1 个答案:

答案 0 :(得分:1)

你的尝试很接近,但它没有用,因为你将Python的内置列表与NumPy的数组混合在一起。重要的是要做出这种区分,因为它们实际上是完全不同的。

您的解决方案可能会使用np.vstack而不是list.append来修复,这将返回NumPy数组而不是列表。

但是,更简单和首选的方法是使用NumPy's slicing

states[:n]