如何从多个简单数组制作结构化数组 [英] How to make a Structured Array from multiple simple array

查看:108
本文介绍了如何从多个简单数组制作结构化数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

import numpy as np

a=np.array([1,2,3,4,5,6,7,8,9])
b=np.array(["a","b","c","d","e","f","g","h","i"])
c=np.array([9,8,7,6,5,4,3,2,1])
datatype=np.dtype({
 'names':['num','char','len'],
 'formats':['i','S32','i']
})

d=np.array(zip(a,b,c),dtype=datatype)

上面的代码使用zip()首先创建一个列表,然后将其转换为结构化数组.它的效率很低,我想知道NumPy中有任何内置函数可以做到这一点.

the code above uses zip() to create a list first and then convert it to structured array. It's low efficiency, I want to know are there any builtin functions that can do this in NumPy.

推荐答案

您最好尝试numpy.rec.fromarrays.

import numpy as np

a=np.array([1,2,3,4,5,6,7,8,9])
b=np.array(["a","b","c","d","e","f","g","h","i"])
c=np.array([9,8,7,6,5,4,3,2,1])

d = np.rec.fromarrays([a,b,c], formats=['i','S32','i'], names=['num','char','len'])

虽然计时不如使用itertools.

In [2]: %timeit d = np.rec.fromarrays([a,b,c], formats=['i','S32','i'], names=['num','char','len'])
10000 loops, best of 3: 86.5 us per loop

In [6]: import itertools

In [7]: %timeit np.fromiter(itertools.izip(a,b,c),dtype=datatype)
100000 loops, best of 3: 11.5 us per loop

这篇关于如何从多个简单数组制作结构化数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆