Во-первых, это не точно отрицание.Последний член имеет тот же знак.Совершенно случайно, так уж случилось, что это близко к отрицанию одного из исходных векторов.
Во-вторых, является правильным перекрестным произведением.Вместо того чтобы делать это вручную, я обращусь к тому факту, что перекрестное произведение геометрически определяется как вектор, который должен быть ортогональным к его двум исходным входным данным.Тот факт, что два входа являются ортогональными (в значительной степени) не имеет значения.
In [11]: first = [ 0.36195593, 0.93219521, 0.]
In [12]: second = [ 0.65916161, -0.25594151, -0.70710672]
In [13]: third = np.cross(first, second)
In [14]: third
Out[14]: array([-0.6591615 , 0.25594147, -0.70710684])
In [15]: np.dot(first, third)
Out[15]: 0.0
In [17]: np.dot(second, third)
Out[17]: 1.1102230246251565e-16
In [18]: np.isclose( np.dot(second, third), 0)
Out[18]: True
HTH.