NumPy数组的第一个和最后一个元素

52 投票
10 回答
344499 浏览
提问于 2025-04-17 14:13

我正在尝试动态获取一个数组的第一个和最后一个元素。

假设这个数组有6个元素。

test = [1,23,4,6,7,8]

如果我想得到 第一个和最后一个 = 1,823,74,6。有没有办法按这个顺序获取这些元素?我查看了一些问题 链接 链接2。我参考了这些链接,得出了这个原型……

#!/usr/bin/env python

import numpy

test = [1,23,4,6,7,8]
test1 = numpy.array([1,23,4,6,7,8])
len_test = len(test)
first_list = [0,1,2]
len_first = len(first_list)
second_list = [-1,-2,-3]
len_second = len(second_list)

for a in range(len_first):
        print numpy.array(test)[[first_list[a] , second_list[a]]]
        print test1[[first_list[a], second_list[a]]]

但是这个原型在元素超过6个时就不适用了。所以,我在想有没有办法动态获取这些元素对。

谢谢!

10 个回答

11

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,不知道该怎么解决。比如,有人可能在使用某个特定的功能时,发现它没有按照预期工作,或者出现了错误信息。这时候,查看相关的讨论和解决方案就显得特别重要。

在StackOverflow上,很多程序员会分享他们遇到的问题和解决方法。通过这些讨论,我们可以学习到很多实用的技巧和经验,帮助我们更好地理解和使用编程工具。

总之,遇到问题时,不要害怕去寻找答案,社区的力量可以帮助我们解决很多疑惑。

arr = np.array([1,2,3,4])
arr[-1] # last element
174

我来到这里,是因为我在网上搜索“python 数组的第一个和最后一个元素”,结果找到了其他所有内容,但就是没有这个。所以这里就是对标题问题的答案:

a = [1,2,3]
a[0] # first element (returns 1)
a[-1] # last element (returns 3)
28

这样怎么样:

In [10]: arr = numpy.array([1,23,4,6,7,8])

In [11]: [(arr[i], arr[-i-1]) for i in range(len(arr) // 2)]
Out[11]: [(1, 8), (23, 7), (4, 6)]

根据arr的大小,全部用NumPy来写可能会更快:

In [41]: arr = numpy.array([1,23,4,6,7,8]*100)

In [42]: %timeit [(arr[i], arr[-i-1]) for i in range(len(arr) // 2)]
10000 loops, best of 3: 167 us per loop

In [43]: %timeit numpy.vstack((arr, arr[::-1]))[:,:len(arr)//2]
100000 loops, best of 3: 16.4 us per loop

撰写回答