linear indexing, , :
cosv = np.cos(x_axis_rotations)
sinv = np.sin(x_axis_rotations)
N = x_axis_rotations.size
out = np.zeros((N,3,3))
out[:,0,0] = 1
idx1 = 4 + 9*np.arange(N)[:,None]
out.ravel()[idx1] = cosv
out.ravel()[idx1+1] = -sinv
out.ravel()[idx1+3] = sinv
out.ravel()[idx1+4] = cosv
zeros 1, :
out.reshape(N,-1)[:,[4,5,7,8]] = np.column_stack((cosv,-sinv,sinv,cosv))
, 1, , -
out.reshape(N,-1)[:,[4,8]] = cosv[:,None]
out.reshape(N,-1)[:,[5,7]] = np.column_stack((-sinv[:,None],sinv[:,None]))
-
out.reshape(N,-1)[:,[4,8]] = cosv[:,None]
out.reshape(N,-1)[:,5] = -sinv
out.reshape(N,-1)[:,7] = sinv