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

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

如何檢查一個數(shù)組是否包含另一個數(shù)組的所有元素?

如何檢查一個數(shù)組是否包含另一個數(shù)組的所有元素?

拉風(fēng)的咖菲貓 2023-08-22 17:15:18
我需要檢查數(shù)組 A 是否包含另一個數(shù)組 B 的所有元素。如果不包含,則輸出缺少的元素。A和B都是整數(shù),B總是從0到N,間隔為1。import numpy as np A=np.array([1,2,3,6,7,8,9]) B=np.arange(10)我知道我可以使用以下內(nèi)容來檢查是否有任何丟失的元素,但它沒有給出丟失元素的索引。np.all(elem in A  for elem in B)python中有沒有一種好方法來輸出缺失元素的索引?
查看完整描述

3 回答

?
回首憶惘然

TA貢獻1847條經(jīng)驗 獲得超11個贊

IIUC 您可以嘗試以下操作并假設(shè) B 始終是“索引”列表:


[i for i in B if i not in A]

輸出將是:[0,4,5]


使用 numpy 做到這一點的最佳方法

Numpy 實際上有一個函數(shù)可以執(zhí)行此操作:numpy.insetdiff1d


np.setdiff1d(B, A)


# Which returns

array([0, 4, 5])


查看完整回答
反對 回復(fù) 2023-08-22
?
守候你守候我

TA貢獻1802條經(jīng)驗 獲得超10個贊

您可以使用enumerate來獲取列表的索引和內(nèi)容。下面的代碼會做你想要的

    idx = [idx for idx, element in enumerate(B) if element not in A]


查看完整回答
反對 回復(fù) 2023-08-22
?
元芳怎么了

TA貢獻1798條經(jīng)驗 獲得超7個贊

我假設(shè)我們想要獲得B, 與 相比時獨有的元素A。


方法#1


鑒于 的具體情況 B is always from 0 to N with an interval of 1,我們可以使用一個簡單的基于掩碼的 -


mask = np.ones(len(B), dtype=bool)

mask[A] = False

out = B[mask]

方法#2


另一種B可以編輯并且內(nèi)存效率更高的方法 -


B[A] = -1

out = B[B>=0]

方法#3


更通用的整數(shù)情況可以用不同的方式處理 -


def setdiff_for_ints(B, A):

    N = max(B.max(), A.max()) - min(min(A.min(),B.min()),0) + 1

    mask = np.zeros(N, dtype=bool)

    mask[B] = True

    mask[A] = False

    out = np.flatnonzero(mask)

    return out

樣本運行 -


In [77]: A

Out[77]: array([ 1,  2,  3,  6,  7,  8, -6])


In [78]: B

Out[78]: array([1, 3, 4, 5, 7, 9])


In [79]: setdiff_for_ints(B, A)

Out[79]: array([4, 5, 9])


# Using np.setdiff1d to verify :

In [80]: np.setdiff1d(B, A)

Out[80]: array([4, 5, 9])

時間安排 -


In [81]: np.random.seed(0)

    ...: A = np.unique(np.random.randint(-10000,100000,1000000))

    ...: B = np.unique(np.random.randint(0,100000,1000000))


# @Hugolmn's soln with np.setdiff1d

In [82]: %timeit np.setdiff1d(B, A)

4.78 ms ± 96.7 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)


In [83]: %timeit setdiff_for_ints(B, A)

599 μs ± 6 μs per loop (mean ± std. dev. of 7 runs, 1000 loops each)


查看完整回答
反對 回復(fù) 2023-08-22
  • 3 回答
  • 0 關(guān)注
  • 219 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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