Thanks for all answers, but I decided to use `from numpy.lib.recfunctions import structured_to_unstructured as str2unstr` since it might be a more direct and clear way of getting the same result.
pos = str2unstr(atoms [["x", "y", "z"]], dtype=np.float64, copy=False)
pos = transform.apply(pos) # atoms[["x", "y", "z"]] @ transform.T
atoms ["x"] = pos[:, 0]
atoms ["y"] = pos[:, 1]
atoms ["z"] = pos[:, 2]