第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何展平一個(gè)numpy結(jié)構(gòu)化數(shù)組,其中每個(gè)元素本身就是一個(gè)numpy數(shù)組

如何展平一個(gè)numpy結(jié)構(gòu)化數(shù)組,其中每個(gè)元素本身就是一個(gè)numpy數(shù)組

慕尼黑8549860 2022-06-22 18:04:38
我有一個(gè) numpy 結(jié)構(gòu)化數(shù)組,其中數(shù)組中的每個(gè)元素本身就是一個(gè) numpy 數(shù)組(dtype='O')。同一行中的每個(gè)元素?cái)?shù)組始終具有相同的長(zhǎng)度,而不同行中的元素?cái)?shù)組可以具有可變長(zhǎng)度。例如,它可能看起來像這樣:array([(array([1], dtype=int32),       array([0.1], dtype=float64)),       (array([2, 3, 4], dtype=int32), array([0.2, 0.3, 0.4], dtype=float64)),       (array([5, 6], dtype=int32),    array([0.5, 0.6], dtype=float64))],      dtype=[('field_1', 'O'), ('field_2', 'O')])展平這樣一個(gè)數(shù)組以使元素?cái)?shù)組長(zhǎng)度 = N 的行擴(kuò)展為 N 行的最佳方法是什么?理想情況下,我希望扁平數(shù)組看起來像:array([(1, 0.1),       (2, 0.2),       (3, 0.3),       (4, 0.4),       (5, 0.5),       (6, 0.6)],      dtype=[('field_1', int32), ('field_2', float64)])但我也可以處理其他格式,只要擴(kuò)展長(zhǎng)度> 1的行,例如:array([(array([1], dtype=int32), array([0.1], dtype=float64)),       (array([2], dtype=int32), array([0.2], dtype=float64)),       (array([3], dtype=int32), array([0.3], dtype=float64)),       (array([4], dtype=int32), array([0.4], dtype=float64)),       (array([5], dtype=int32), array([0.5], dtype=float64)),       (array([6], dtype=int32), array([0.6], dtype=float64))],      dtype=[('field_1', 'O'), ('field_2', 'O')])如果這更容易實(shí)現(xiàn)。
查看完整描述

2 回答

?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊

與上面類似,但使用 list 和 zip


z

array([(array([1]), array([0.1])),

       (array([2, 3, 4]), array([0.2, 0.3, 0.4])),

       (array([5, 6]), array([0.5, 0.6]))],

      dtype=[('field_1', 'O'), ('field_2', 'O')])


x = np.concatenate(z['field_1'])

y = np.concatenate(z['field_2'])


dt = np.dtype([('f0', '<i4'), ('f1', 'f8')])

np.asarray(list(zip(x, y)), dtype=dt)


array([(1, 0.1), (2, 0.2), (3, 0.3), (4, 0.4), (5, 0.5), (6, 0.6)],

      dtype=[('f0', '<i4'), ('f1', '<f8')])


查看完整回答
反對(duì) 回復(fù) 2022-06-22
?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊

我不確定這是“最好”的方式,但它可以滿足您的需求。我不知道這可以完全在內(nèi)存中完成而不需要副本,所以我將從一個(gè)空數(shù)組開始。


>>>import numpy as np


>>>original = np.array([(np.array([1], dtype=np.int32), np.array([0.1], dtype=np.float64)),

...   (np.array([2], dtype=np.int32), np.array([0.2], dtype=np.float64)),

...   (np.array([3], dtype=np.int32), np.array([0.3], dtype=np.float64)),

...   (np.array([4], dtype=np.int32), np.array([0.4], dtype=np.float64)),

...   (np.array([5], dtype=np.int32), np.array([0.5], dtype=np.float64)),

...   (np.array([6], dtype=np.int32), np.array([0.6], dtype=np.float64))],

...   dtype=[('field_1', '<i4'), ('field_2', '<f8')])

>>>copy = np.empty((6,1), dtype=[('field_1', '<i4'), ('field_2', '<f8')])

然后我們可以連接原始數(shù)組中的 2 個(gè)字段


>>>copy['field_1'][:,0] = np.concatenate([original['field_1']])

>>>copy['field_2'][:,0] = np.concatenate([original['field_2']])

>>>copy

array([[(1, 0.1)],

   [(2, 0.2)],

   [(3, 0.3)],

   [(4, 0.4)],

   [(5, 0.5)],

   [(6, 0.6)]], dtype=[('field_1', '<i4'), ('field_2', '<f8')])

最后一步是展平副本


>>>copy.flatten()

array([(1, 0.1), (2, 0.2), (3, 0.3), (4, 0.4), (5, 0.5), (6, 0.6)],

  dtype=[('field_1', '<i4'), ('field_2', '<f8')])


查看完整回答
反對(duì) 回復(fù) 2022-06-22
  • 2 回答
  • 0 關(guān)注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)