我的問題基本上是在this previous question'Q2'中詢問(而未回答)的內容。更改字符串數據的結構化陣列零的dtype
我有一個字符串列和一列整數的結構化數組。我用整數代替字符串,但由於該列的類型不變,整數被記錄爲字符串。我可以將列的dtype更改爲整數,但所有字符串都將轉換爲0,而不是每個字符串中的整數值。如何更改列,使整數值在dtype轉換期間不會丟失?
我創建了一個說明性的例子:
dat = np.array([('1', 3392),('2', 4159),('1', 1093),('1', 9836)], dtype=[('code', 'U24'),('id', 'i2')])
dat.astype(dtype=[('code', 'i4'), ('id', 'i2')])
但對於原因,我不明白,這實際工作,得到以下特性:
array([(1, 3392), (2, 4159), (1, 1093), (1, 9836)],
dtype=[('code', '<i4'), ('id', '<i2')])
這就是我想要的!相反,出於某種原因,我得到等價的:
array([(0, 3392), (0, 4159), (0, 1093), (0, 9836)],
dtype=[('code', '<i4'), ('id', '<i2')])
什麼會導致將被歸零所有的「代碼」值超出這樣的,如果事實上,這不是從ndarray.astype
預期的結果?謝謝。 (如果它是相關的,我使用Python 3.)
編輯:下面是在用字典處理後的實際數據的快照。
array([('1', 2814), ('1', 1185), ('1', 6836), ('2', 7057), ('1', 5403),...
('1', 1642), ('1', 3967), ('2', 7982), ('1', 6139), ('1', 9934),
('2', 9932), ('1', 3044), ('1', 2769)],
dtype=[('name', '<U24'), ('id', '<i2')])
故障數據示例? – Veedrac
我無法分享原始數據或用於隱私原因的實際字典,但是我通過字典運行後用大量數據編輯了原始問題。 – trynthink