亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將不同的數據類型存儲在一個NumPy數組中?

將不同的數據類型存儲在一個NumPy數組中?

catspeake 2019-08-13 16:10:41
將不同的數據類型存儲在一個NumPy數組中?我有兩個不同的數組,一個是字符串,另一個是整數。我想將它們連接到一個數組中,其中每列都具有原始數據類型。我目前的解決方案(見下文)將整個數組轉換為dtype = string,這看起來非常低效。combined_array = np.concatenate((A, B), axis = 1)是否有可能多發dtypes的combined_array時候A.dtype = string和B.dtype = int?
查看完整描述

2 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

一種方法可能是使用記錄數組。“列”不會像標準numpy數組的列,但對于大多數用例,這就足夠了:

>>> a = numpy.array(['a', 'b', 'c', 'd', 'e'])>>> b = numpy.arange(5)>>> records = numpy.rec.fromarrays((a, b), names=('keys', 'data'))>>> records
rec.array([('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4)], 
      dtype=[('keys', '|S1'), ('data', '<i8')])>>> records['keys']rec.array(['a', 'b', 'c', 'd', 'e'], 
      dtype='|S1')>>> records['data']array([0, 1, 2, 3, 4])

請注意,您還可以通過指定數組的數據類型來執行與標準數組類似的操作。這被稱為“ 結構化陣列 ”:

>>> arr = numpy.array([('a', 0), ('b', 1)], 
                      dtype=([('keys', '|S1'), ('data', 'i8')]))>>> arr
array([('a', 0), ('b', 1)], 
      dtype=[('keys', '|S1'), ('data', '<i8')])

不同之處在于記錄數組還允許對各個數據字段進行屬性訪問。標準結構化數組沒有。

>>> records.keys
chararray(['a', 'b', 'c', 'd', 'e'], 
      dtype='|S1')>>> arr.keysTraceback (most recent call last):
  File "<stdin>", line 1, in <module>AttributeError: 'numpy.ndarray' object has no attribute 'keys'


查看完整回答
反對 回復 2019-08-13
?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

一個簡單的解決方案:將數據轉換為對象'O'類型

z = np.zeros((2,2), dtype='U2')o = np.ones((2,1), dtype='O')np.hstack([o, z])

創建數組:

array([[1, '', ''],
       [1, '', '']], dtype=object)


查看完整回答
反對 回復 2019-08-13
  • 2 回答
  • 0 關注
  • 3560 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號