Hok*_*rra 6 python arrays numpy slice
如何根据索引公式"雕刻"或掩盖2D numpy数组?我不关心元素值是什么,只关心它在数组中的位置.
例如,给定一个mxm数组,如何提取地址符合的所有元素
for i in range(0,m):
for j in range(0,m):
if j-i-k>=0:
A[i,j] = 1
elif j-p-k>=0:
A[i,j] = 1
elif i-k>=0:
A[i,j] = 1
else:
A[i,j] = 0
j=j+1
i=i+1
Run Code Online (Sandbox Code Playgroud)
哪里
k和p是任意围栏
假设
k<m
p<m
Run Code Online (Sandbox Code Playgroud)
这最终看起来像对角切片+水平切片+垂直切片.可以在没有上面的for循环的情况下完成吗?
xdim,ydim = data.shape
k = 2
a, b = np.meshgrid(range(ydim),range(xdim))
mask = (b - a -k) < 0
new_data = data[mask]
new_data2 = np.array(data) # to force a copy
new_data2[~mask] = 0
Run Code Online (Sandbox Code Playgroud)
new_data
是一个向量,因为掩蔽过程(以这种方式完成)使数组变平。您正在选择一个带有参差不齐的形状,无法将其表示为数组。如果您只想将未选择的值设置为 0,请使用 new_data2。