4 면체에 일련의 격자 점을 생성하는 다음 함수가 있습니다.NumPy에 루프 종속성이있는 for 벡터를 벡터화하는 중첩
def tet_grid(n):
xv = np.array([
[-1.,-1.,-1.],
[ 1.,-1.,-1.],
[-1., 1.,-1.],
[-1.,-1., 1.],
])
nsize = int((n+1)*(n+2)*(n+3)/6);
xg = np.zeros((nsize,3))
p = 0
for i in range (0, n + 1):
for j in range (0, n + 1 - i):
for k in range (0, n + 1 - i - j):
l = n - i - j - k
xg[p,0]=(i * xv[0,0] + j * xv[1,0] + k * xv[2,0] + l * xv[3,0])/n
xg[p,1]=(i * xv[0,1] + j * xv[1,1] + k * xv[2,1] + l * xv[3,1])/n
xg[p,2]=(i * xv[0,2] + j * xv[1,2] + k * xv[2,2] + l * xv[3,2])/n
p = p + 1
return xg
NumPy에서 쉽게 벡터화 할 수 있습니까?
return xg/n
: 다음은
n
으로 나누기가 매우 끝으로 이동 될 수 있습니다 것입니다
xg[p]=(i * xv[0] + j * xv[1] + k * xv[2] + l * xv[3])/n
:
종속 된 것들은 벡터화하는 것이 재미 있습니다! – Divakar
@Divakar 참으로! 나는 여전히 필요한 메모리의 5/6을 낭비하지 않는 마법의 해결책을 기다리고있다. –
당신이 이미하고있는 일을 이미하고있는 것처럼 보인다. 메모리가 최적화 된 더 나은 하드웨어를 기다릴 필요가 있습니다. – Divakar