Infer the attribute type for an array from its shape and dtype.
(n,) or (n, 1): bool to BOOLEAN, int8 to INT8, other integers to INT, floats to FLOAT, and strings to STRING. Unsigned integers map to INT, as their values may not fit INT8.
(n, 2): int16 to INT16_2D, other integers to INT32_2D, and floats to FLOAT2.
(n, 3): any numeric dtype to FLOAT_VECTOR.
(n, 4): uint8 to BYTE_COLOR, and other numeric dtypes to FLOAT4. Before Blender 5.2, which has no FLOAT4, they map to FLOAT_COLOR.
(n, 4, 4): any numeric dtype to FLOAT4X4.
FLOAT_COLOR and QUATERNION are never inferred, and must be passed as atype.