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

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

獲取兩個(gè)2D numpy數(shù)組的相交行

獲取兩個(gè)2D numpy數(shù)組的相交行

犯罪嫌疑人X 2019-09-03 15:53:07
我想在兩個(gè)2D numpy數(shù)組中獲得相交(公共)行。例如,如果以下數(shù)組作為輸入傳遞:array([[1, 4],       [2, 5],       [3, 6]])array([[1, 4],       [3, 6],       [7, 8]])輸出應(yīng)該是:array([[1, 4],       [3, 6])我知道如何用循環(huán)來(lái)做這件事。我正在尋找一種Pythonic / Numpy方式來(lái)做到這一點(diǎn)。
查看完整描述

3 回答

?
交互式愛(ài)情

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

對(duì)于短數(shù)組,使用集合可能是最清晰,最易讀的方法。


另一種方法是使用numpy.intersect1d。你必須欺騙它將行視為單個(gè)值,但是......這使得事情的可讀性降低了......


import numpy as np


A = np.array([[1,4],[2,5],[3,6]])

B = np.array([[1,4],[3,6],[7,8]])


nrows, ncols = A.shape

dtype={'names':['f{}'.format(i) for i in range(ncols)],

       'formats':ncols * [A.dtype]}


C = np.intersect1d(A.view(dtype), B.view(dtype))


# This last bit is optional if you're okay with "C" being a structured array...

C = C.view(A.dtype).reshape(-1, ncols)

對(duì)于大型數(shù)組,這應(yīng)該比使用集合快得多。


查看完整回答
反對(duì) 回復(fù) 2019-09-03
?
Helenr

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

你可以使用Python的集合:


>>> import numpy as np

>>> A = np.array([[1,4],[2,5],[3,6]])

>>> B = np.array([[1,4],[3,6],[7,8]])

>>> aset = set([tuple(x) for x in A])

>>> bset = set([tuple(x) for x in B])

>>> np.array([x for x in aset & bset])

array([[1, 4],

       [3, 6]])

正如Rob Cowie指出的那樣,這可以更簡(jiǎn)潔地完成


np.array([x for x in set(tuple(x) for x in A) & set(tuple(x) for x in B)])

可能有一種方法可以做到這一點(diǎn),而不是從數(shù)組到元組的所有來(lái)回,但它現(xiàn)在不會(huì)來(lái)找我。


查看完整回答
反對(duì) 回復(fù) 2019-09-03
  • 3 回答
  • 0 關(guān)注
  • 913 瀏覽
慕課專欄
更多

添加回答

舉報(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)