Med*_*ata 10 python arrays numpy
如何删除数组中的每个第n个元素?
import numpy as np
x = np.array([0,10,27,35,44,32,56,35,87,22,47,17])
n = 3 # remove every 3rd element
Run Code Online (Sandbox Code Playgroud)
......有点像x[0::n]?我试过这个,但当然不行:
for i in np.arange(0,len(x),n):
x = np.delete(x,i)
Run Code Online (Sandbox Code Playgroud)
Jon*_*nts 10
你很接近......将整个范围作为子片段传递给删除,而不是试图依次删除每个元素,例如:
import numpy as np
x = np.array([0,10,27,35,44,32,56,35,87,22,47,17])
x = np.delete(x, np.arange(0, x.size, 3))
# [10 27 44 32 35 87 47 17]
Run Code Online (Sandbox Code Playgroud)
如果数组的长度是 n 的倍数,我只是添加另一种重塑方式:
import numpy as np
x = np.array([0,10,27,35,44,32,56,35,87,22,47,17])
x = x.reshape(-1,3)[:,1:].flatten()
# [10 27 44 32 35 87 47 17]
Run Code Online (Sandbox Code Playgroud)
在我的计算机上,它的运行速度几乎是解决方案的两倍np.delete(老实说,在 1.8 倍到 1.9 倍之间)。
您还可以轻松执行奇特的操作,例如每个 n 个值删除 m 个等。
| 归档时间: |
|
| 查看次数: |
9337 次 |
| 最近记录: |