![](/img/trans.png)
[英]Turning a linear sequence in a numpy array into a geometric progression sequence
[英]Deleting values from numpy array in Geometric progression
我想以增量方式删除元素,例如
arr = [1,2,3,4,5,6,7,8,9,10]
# want to delete first element, second element, forth element
# 1,2,4,8,16,32,62.... till length of list
# For above example output will be
arr = [3,5,6,7,9,10]
arr 是numpy
数组。 有什么方法可以定义自定义 position 来删除元素。 现在我能想到的就是写一个自定义的 function
import pandas as pd
import math
from numpy import random
arr = random.randint(100, size=(10))
get_index = [2**i for i in range(math.log(len(arr)))]
arr = numpy.delete(arr, index)
如果有一些 numpy function 可以做到这一点,那就太好了
您可以使用不需要的元素的索引创建一个set
:
from math import log, ceil
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
del_idx = {2 ** i for i in range(ceil(log(len(arr), 2)))}
print(del_idx) # {8, 1, 2, 4}
res = [x for i, x in enumerate(arr, start=1) if i not in del_idx]
print(res) # [3, 5, 6, 7, 9, 10]
索引 go 到log(len(arr), 2)
。
然后你可以enumerate
你的数组并忽略你不想要的索引。
使用numpy
你可以这样做:
import numpy as np
from math import log, ceil
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
del_idx = [2 ** i - 1 for i in range(ceil(log(len(arr), 2)))]
arr = np.delete(arr, del_idx)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.