这是一个应该更快的实现。它将所有内容转换为的数组,
numpy.uint8并且不使用任何临时对象。
def join_struct_arrays(arrays): sizes = numpy.array([a.itemsize for a in arrays]) offsets = numpy.r_[0, sizes.cumsum()] n = len(arrays[0]) joint = numpy.empty((n, offsets[-1]), dtype=numpy.uint8) for a, size, offset in zip(arrays, sizes, offsets): joint[:,offset:offset+size] = a.view(numpy.uint8).reshape(n,size) dtype = sum((a.dtype.descr for a in arrays), []) return joint.ravel().view(dtype)
编辑 :简化了代码,避免了不必要的操作
as_strided()。



