我想做的是使用矢量化操作来加速我的代码,如果这里有可能的话。例如,切片阵列可能更快。以下是我的代码片段:
def rotated_point(x,y,z):
"""
Inputs:
x,y,z:(old) original coordinates of atom
Returns:
x,y,z:(new) new coordinates of atom after rotation
about lower-left H-C bond
"""
x_new = (((c4x*(v**2+w**2)-u*(c4y*v+c4z*w-u*x-v*y-w*z))*(1-cos(d))+
L*x*cos(d)+sqrt(L)*(-c4z*v+c4y*w-w*y+v*z)*sin(d))/L)
y_new = (((c4y*(u**2+w**2)-v*(c4x*u+c4z*w-u*x-v*y-w*z))*(1-cos(d))+
L*y*cos(d)+sqrt(L)*(c4z*u-c4x*w+w*x-u*z)*sin(d))/L)
z_new = (((c4z*(u**2+v**2)-w*(c4x*u+c4y*v-u*x-v*y-w*z))*(1-cos(d))+
L*z*cos(d)+sqrt(L)*(-c4y*u+c4x*v-v*x+u*y)*sin(d))/L)
return x_new, y_new, z_new
x = [c1x, c2x, c3x, c4x, c5x, c6x, h1x, h2x, h3x, h4x, h5x, h6x]
y = [c1y, c2y, c3y, c4y, c5y, c6y, h1y, h2y, h3y, h4y, h5y, h6y]
z = [c1z, c2z, c3z, c4z, c5z, c6z, h1z, h2z, h3z, h4z, h5z, h6z]
x_r = []
y_r = []
z_r = []
for i in range(len(x)):
if (i==1 or i==3 or i==7 or i==9):
x_r.append(x[i])
y_r.append(y[i])
z_r.append(z[i])
else:
x_new, y_new, z_new = rotated_point(x[i], y[i], z[i])
x_r.append(x_new)
y_r.append(y_new)
z_r.append(z_new)
有没有办法把它变成向量函数
目前没有回答
相关问题 更多 >
编程相关推荐