I've found the following puzzling behavior with NumPy and a custom dtype for an ndarray:
import numpy as np
# Make a custom dtype with a single triplet of floats (my actual dtype has other
# components, but this suffices to demonstrate the problem.
dt = np.dtype([('a', np.float64, 3)])
# Make a zero array with this dtype:
points = np.zeros((4, 4), dtype=dt)
# Try to edit an entry:
points[0][0]['a'] = np.array([1, 1, 1])
print points[0][0]['a']
Now, this comes back as containing not [1. 1. 1.] as I would expect, but instead [1. 0. 0.], only performing the assignment on the first coordinate. I can get around this by performing the assignment coordinate-wise, but that seems unnecessary given that the full assignment should certainly be the default behavior in this case.
Any thoughts on what's going on here?