[英]Assign column and row labels to merged numpy arrays?
我有多個沒有列名或行名的數組,我想使用numpy.vstack()
或numpy.hstack()
類的方法將它們組合在一起。
創建結構化數組時可以完成分配列和行標簽的操作,但是hstack和vstack似乎沒有此功能。
import numpy as np
a1 = np.array([1,2,3,4])
a2 = np.array([5,6,7,8])
a3 = np.vstack([a1,a2],dtype=[('RowName1','double'),('RowName2','double')])
收益:
TypeError: vstack() got an unexpected keyword argument 'dtype'
有什么建議么?
一些可能的選項是(因為recfunctions
是相當隱藏):
from numpy.lib import recfunctions
a1 = np.array([1,2,3,4]).astype(('RowName1',float))
a2 = np.array([5,6,7,8]).astype(('RowName2',float))
recfunctions.merge_arrays((a1, a2))
有了這個,但是要注意一些問題,因為內存的重新解釋如何與視圖一起工作,最好只使用級聯數組創建一個新的Recarray。
您可以扭轉邏輯:
import numpy
a1 = np.array([1,2,3,4])
a2 = np.array([5,6,7,8])
# ok, not that beautiful. But if your arrays are the correct type to begin with
# you can skip that astype call. Using `np.c_[]` since it happens to concatenate right.
a3 = np.c_[v1,v2].astype(float).copy('C').view(dtype=[('RowName1',float),('RowName2',float)])
vstack
不適用於結構化數組,而僅適用於在內存中連續的“標准” numpy數組。 最簡單的方法是創建一個空的結構化數組,然后用所需的行填充它:
import numpy as np
a3 = np.empty(4, dtype=[('RowName1','double'),('RowName2','double')])
a3['RowName1'] = a1
a3['RowName2'] = a2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.