您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在考虑边界的情况下获取numpy数组中的相邻元素?

如何在考虑边界的情况下获取numpy数组中的相邻元素?

import numpy as np
a = np.array([0,1,2,3,4,5,6,7,8,9])
num_neighbor=3

for index in range(len(a)):
    left = a[:index][-num_neighbor:]
    right= a[index+1:num_neighbor+index+1]
    print(index,left,right)

产量

(0, array([], dtype=int32), array([1, 2, 3]))
(1, array([0]), array([2, 3, 4]))
(2, array([0, 1]), array([3, 4, 5]))
(3, array([0, 1, 2]), array([4, 5, 6]))
(4, array([1, 2, 3]), array([5, 6, 7]))
(5, array([2, 3, 4]), array([6, 7, 8]))
(6, array([3, 4, 5]), array([7, 8, 9]))
(7, array([4, 5, 6]), array([8, 9]))
(8, array([5, 6, 7]), array([9]))
(9, array([6, 7, 8]), array([], dtype=int32))

什么时候a[index- num_neighbor:index]不起作用的原因index<num_neighbor是由于切片规则#3和#4

鉴于s[i:j]

如果i或j为负,则索引相对于字符串的结尾:len(s)+ i或len(s)+ j被替换。

从i到j的s切片被定义为索引为k的项目序列,使得i <= k <j。如果i或j大于len,请使用len。如果省略i或无,则使用0。如果省略j或无,则使用len(s)。如果i大于或等于j,则切片为空。

所以什么时候index=1a[index-num_neighbor:index] = a[-2:1] = a[10-2:1] = a[8:1] = []

其他 2022/1/1 18:33:40 有561人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶