import numpy as np
dx = 8
dy = 10
bx = 5.34
by = 1.09
index = np.zeros((dx+dy),dtype = 'int32')
for i in np.arange(1,dy+1):
for j in np.arange (1,dx+1):
if i-by > 0:
theta = 180*np.arctan(abs(j-bx)/(i-by))/np.pi
if theta<10:
r = np.around(np.sqrt((j-bx)**2+(i-by)**2))
r = r.astype(int)
if r>0:
index[r]+=1
output = np.zeros((r, index[r]),dtype='int32')
output[r-1,index[r]-1] = i+(j-1)*dy
このコードは (r, index[r]) をインデックスとして使用し、i+(j-1)*dy の値を対応するインデックスに配置し、それを次のように新しい行列/配列に記録する必要があります-
array([[ 0, 0, 0],
[ 0, 0, 0],
[44, 0, 0],
[45, 55, 0],
[46, 56, 0],
[47, 57, 0],
[48, 58, 0],
[39, 49, 59],
[40, 50, 60]])
しかし、私は望んでいない代わりにこのような出力を持っています-
array([[ 0, 0, 0],
[ 0, 0, 0],
[ 0, 0, 0],
[ 0, 0, 0],
[ 0, 0, 0],
[ 0, 0, 0],
[ 0, 0, 0],
[ 0, 0, 0],
[ 0, 0, 60]])