NumPy数组的第一个和最后一个元素
我正在尝试动态获取一个数组的第一个和最后一个元素。
假设这个数组有6个元素。
test = [1,23,4,6,7,8]
如果我想得到 第一个和最后一个 = 1,8
,23,7
和 4,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