I'm using structured arrays to store atoms data produced by LAMMPS (I'm using a structured array that follows its format). I need to rotate the positions:
```
import numpy as np
transform = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]], dtype=np.float64)
dtype = np.dtype([("x", np.float64), ("y", np.float64), ("z", np.float64)]) # real case with more fields, integers, bools, strings
atoms = np.array(
[
(0.0, 0.0, 0.0),
(1.0, 0.0, 0.0),
(0.0, 1.0, 0.0),
(1.0, 1.0, 1.0),
],
dtype=dtype,
)
atoms[["x", "y", "z"]] = atoms[["x", "y", "z"]] @ transform.T
```
But this produces:
```
Traceback (most recent call last):
File "c:\Users\acgc99\Desktop\rotation.py", line 16, in <module>
atoms[["x", "y", "z"]] = atoms[["x", "y", "z"]] @ transform.T
~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
numpy._core._exceptions._UFuncNoLoopError: ufunc 'matmul' did not contain a loop with signature matching types (dtype([('x', '<f8'), ('y', '<f8'), ('z', '<f8')]), dtype('float64')) -> None
```
I can convert to unstructured arrays, but I guess that doing that change multiple times is not efficient when working with tens of millions of atoms.
_______________________________________________
NumPy-Discussion mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/numpy-discussion.python.org
Member address: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.