我的 R 编程头连接到使用负切片索引来排除元素。
举个例子:
my_list = [0,1,2,3,4,5,6,7,8,9]
my_neg_slice = [-2, -8, 0, -5]
会回来
[1 3 4 6 7 9]
即返回所有不在 (0, 2, 5, 8) 中的索引。
这更像是一个满足我好奇心的问题,因为 Pythonic 负索引对我来说非常新颖(这不是对 Python 实现的批评,因为我非常喜欢它)。有人在 Python 中实现了 R_Style_Negative_Indexing 吗?我对 Python 很陌生,所以这种类型的索引可能已经存在?也许有人创建了自定义扩展(抱歉,如果这不是正确的术语)来扩展适当的库?
显然,这对于字符串来说是非常棘手的,但我希望人们可以通过排除一组已知的稀疏元素来看到想要切片成对象(List、Dict、DataFrame、...)的概念?
我在 Python 中执行负 R 样式索引的尼安德特人方式:
import numpy as np
my_list = [0,1,2,3,4,5,6,7,8,9]
my_neg_slice = [-2, -8, 0, -5]
# Convert my_list to a numpy array as it's much easier to work with
step0 = np.array(my_list)
# Same for the negative_slices
step1 = np.array(my_neg_slice)
# Identify the indexes that are negative (assume 0 implies exclude)
step2 = step1 <= 0
# For the negative indexes, flip the sign so they are positive
step3 = -step1[step2]
# Generate the complete index for my_list
step4 = np.arange(len(my_list))
# Identify the indices required by exlucing my_neg_slice indices
step5 = np.setdiff1d(step4, step3)
# Make a cup of tea! Maybe time to rewire the brain and think like a snake!
step6 = step0[step5]
print(step6)
[1 3 4 6 7 9]
我没有要解决的特定问题,我只是想通过索引建立我对可能性的理解?提前谢谢了。伯蒂。