Головка программирования My 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, поскольку мне это очень нравится). Кто-нибудь реализовал R_Style_Negative_Indexing в Python? Я очень новичок в Python, поэтому этот тип индексирования может уже существовать? Возможно, кто-то создал пользовательское расширение (извините, если это не правильная терминология), чтобы расширить соответствующую библиотеку?
Очевидно, это было бы очень сложно реализовать для строк, но я надеюсь, что люди смогут увидеть концепцию желания перерезать объект (List, Dict, DataFrame,...), исключив набор известных разреженных элементов
Мой неандертальский способ выполнить отрицательную индексацию в стиле R в Python:
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 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]
У меня нет особой проблемы, которую я пытаюсь взломать, я просто ищу, чтобы понять свое понимание возможностей с индексацией? Спасибо заранее. Берти.