如何跳过 NumPy 数组的每个第 N 个索引?
在本文中,我们将看到如何跳过 NumPy 数组的每个第 N 个索引。有多种方法可以访问和跳过 NumPy 数组的元素:
方法 1:朴素的方法
可以维护一个计数器来保持到目前为止遍历的元素的计数,然后一旦遇到第 N 个位置,该元素将被跳过并将计数器重置为 0。所有元素都被附加到一个新列表中,不包括遍历时遇到的第 N 个索引元素。在此期间所需的时间相当于 O(n),其中 n 是 numpy 数组的大小。如果元素需要只是打印而不是存储,我们可以跳过创建另一个数组的声明。
例子:
Python3
# importing required packages
import numpy as np
# declaring a numpy array
x = np.array([1.2, 3.0, 6.7, 8.7, 8.2,
1.3, 4.5, 6.5, 1.2, 3.0,
6.7, 8.7, 8.2, 1.3, 4.5,
6.5])
# skipping every 4th element
n = 4
# declaring new list
new_arr = []
# maintaining cntr
cntr = 0
# looping over array
for i in x:
# checking if element is nth pos
if(cntr % n != 0):
new_arr.append(i)
# incrementing counter
cntr += 1
print("Array after skipping nth element")
print(new_arr)
Python3
# importing required packages
import numpy as np
# declaring a numpy array
x = np.array([0, 1, 2, 3, 2, 5, 2, 7, 2, 9])
print("Original Array")
print(x)
# skipping third element
new_arr = x[np.mod(np.arange(x.size), 3) != 0]
print("Array after skipping elements : ")
print(new_arr)
Python
# importing required packages
import numpy as np
# declaring a numpy array
x = np.array([0, 1, 2, 3, 2, 5, 2, 7, 2, 9])
# calculating length of array
length = len(x)
# accessing every third element
# from the array
print("List after n=3rd element access")
print(x[0:length:3])
输出:
Array after skipping nth element
[3.0, 6.7, 8.7, 1.3, 4.5, 6.5, 3.0, 6.7, 8.7, 1.3, 4.5, 6.5]
方法二:使用NumPy模数法
可以首先使用 numpy.arange() 方法将数组排列成均匀间隔的块。
Syntax: np.arange(start,stop,step)
Parameter:
- start: Start of the interval
- stop: End of the interval
- step: Steps between the start and end interval
然后,将 np.mod() 方法应用于获得的列表间隔,然后使用第 n 个索引计算每个元素的模。模输出不为 0 的原始数组元素作为最终列表返回。
例子
蟒蛇3
# importing required packages
import numpy as np
# declaring a numpy array
x = np.array([0, 1, 2, 3, 2, 5, 2, 7, 2, 9])
print("Original Array")
print(x)
# skipping third element
new_arr = x[np.mod(np.arange(x.size), 3) != 0]
print("Array after skipping elements : ")
print(new_arr)
输出:
Original Array
[0 1 2 3 2 5 2 7 2 9]
Array after skipping elements :
[1 2 2 5 7 2]
方法 3:NumPy 切片
NumPy 切片基本上是数据子采样,我们在其中创建原始数据的视图,这会产生恒定的时间。对原始数组进行更改,并将整个原始数组保存在内存中。也可以显式地制作数据的副本。
句法:
arr[start:end:st]
这里,start 是起始索引,end 是停止索引,st 是 step,其中 step 不等于 0。并且,它返回一个包含分别属于 st 索引的元素的子数组.假设数组的索引从 0 开始。
例子
Python
# importing required packages
import numpy as np
# declaring a numpy array
x = np.array([0, 1, 2, 3, 2, 5, 2, 7, 2, 9])
# calculating length of array
length = len(x)
# accessing every third element
# from the array
print("List after n=3rd element access")
print(x[0:length:3])
输出:
List after n=3rd element access
[0 3 2 9]