我有一个数字阵列如下:
array([[ 0.00365172, -0.01862929, 0.00739219, ..., -0.05520727,
-0.00388453, -0.00591132],
[ 0.00084692, -0.0177305 , 0.00618157, ..., -0.05275924,
-0.00323982, -0.00107789],
[ 0.01276451, -0.00361472, 0.0008607 , ..., 0.00464235,
0.00075972, 0.00700309]], dtype=float32)
将此数据存储在磁盘上的最有效方法是什么,以便每个数组项都在某些文本标签中编码,如下所示:
array(['LabelA'
'LabelB',
'LabelC'])
换句话说,LabelA,LabelB和LabelC是相应数字向量的字符串表示。我的目标是以人类可读的格式存储这种数组,我并不真正关心读取数值,而是保留它们与相应唯一标签的一对一关系。
这样的事情可能吗?感谢。
答案 0 :(得分:4)
您似乎正在尝试根据各自之间的唯一性为每行分配标签。因此,您可以使用np.unique
及其axis
参数将每行打包为一个项和return_inverse
,以便根据每个项的唯一性对每个项进行ID,像这样 -
In [42]: a = np.array([[3,5,8,2],[4,1,5,2],[3,5,8,2]])
In [43]: unique_ids = np.unique(a,axis=0, return_inverse=1)[1]
In [44]: unique_ids
Out[44]: array([0, 1, 0])
In [45]: ['Label'+str(i) for i in unique_ids]
Out[45]: ['Label0', 'Label1', 'Label0']
对于最高26
个唯一标签,我们一定可以使用capital letters
-
In [50]: import string
In [51]: ['Label'+string.uppercase[i] for i in unique_ids]
Out[51]: ['LabelA', 'LabelB', 'LabelA']