将不同的数据类型存储在一个NumPy数组中?

将不同的数据类型存储在一个NumPy数组中?

我有两个不同的数组,一个是字符串,另一个是整数。我想将它们连接到一个数组中,其中每列都具有原始数据类型。我目前的解决方案(见下文)将整个数组转换为dtype = string,这看起来非常低效。

combined_array = np.concatenate((A, B), axis = 1)

是否有可能多发dtypes的combined_array时候A.dtype = stringB.dtype = int


catspeake
浏览 3490回答 2
2回答

哆啦的时光机

一种方法可能是使用记录数组。“列”不会像标准numpy数组的列,但对于大多数用例,这就足够了:>>>&nbsp;a&nbsp;=&nbsp;numpy.array(['a',&nbsp;'b',&nbsp;'c',&nbsp;'d',&nbsp;'e'])>>>&nbsp;b&nbsp;=&nbsp;numpy.arange(5)>>>&nbsp;records&nbsp;=&nbsp;numpy.rec.fromarrays((a,&nbsp;b),&nbsp;names=('keys',&nbsp;'data'))>>>&nbsp;records rec.array([('a',&nbsp;0),&nbsp;('b',&nbsp;1),&nbsp;('c',&nbsp;2),&nbsp;('d',&nbsp;3),&nbsp;('e',&nbsp;4)],&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtype=[('keys',&nbsp;'|S1'),&nbsp;('data',&nbsp;'<i8')])>>>&nbsp;records['keys']rec.array(['a',&nbsp;'b',&nbsp;'c',&nbsp;'d',&nbsp;'e'],&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtype='|S1')>>>&nbsp;records['data']array([0,&nbsp;1,&nbsp;2,&nbsp;3,&nbsp;4])请注意,您还可以通过指定数组的数据类型来执行与标准数组类似的操作。这被称为“&nbsp;结构化阵列&nbsp;”:>>>&nbsp;arr&nbsp;=&nbsp;numpy.array([('a',&nbsp;0),&nbsp;('b',&nbsp;1)],&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtype=([('keys',&nbsp;'|S1'),&nbsp;('data',&nbsp;'i8')]))>>>&nbsp;arr array([('a',&nbsp;0),&nbsp;('b',&nbsp;1)],&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtype=[('keys',&nbsp;'|S1'),&nbsp;('data',&nbsp;'<i8')])不同之处在于记录数组还允许对各个数据字段进行属性访问。标准结构化数组没有。>>>&nbsp;records.keys chararray(['a',&nbsp;'b',&nbsp;'c',&nbsp;'d',&nbsp;'e'],&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtype='|S1')>>>&nbsp;arr.keysTraceback&nbsp;(most&nbsp;recent&nbsp;call&nbsp;last): &nbsp;&nbsp;File&nbsp;"<stdin>",&nbsp;line&nbsp;1,&nbsp;in&nbsp;<module>AttributeError:&nbsp;'numpy.ndarray'&nbsp;object&nbsp;has&nbsp;no&nbsp;attribute&nbsp;'keys'

慕无忌1623718

一个简单的解决方案:将数据转换为对象'O'类型z&nbsp;=&nbsp;np.zeros((2,2),&nbsp;dtype='U2')o&nbsp;=&nbsp;np.ones((2,1),&nbsp;dtype='O')np.hstack([o,&nbsp;z])创建数组:array([[1,&nbsp;'',&nbsp;''], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[1,&nbsp;'',&nbsp;'']],&nbsp;dtype=object)
打开App,查看更多内容
随时随地看视频慕课网APP