簡體   English   中英

用布爾附加numpy數組

[英]appending numpy array with booleans

有人可以解釋這段代碼在做什么嗎?

   a = np.array([[1, 2], [3, 4]])
   a[..., [True, False]]

什么是[True, False]在那里做什么?

省略號和布爾值作為整數

來自numpy文檔

省略號擴展為:x.ndim與選擇元組長度相同的對象所需的對象數量。 可能只存在一個省略號

TrueFalse 只是模糊0和1 以文檔為例:

x = np.array([[[1],[2],[3]], [[4],[5],[6]]])
x[...,0]
# outputs: array([[1, 2, 3],
#       [4, 5, 6]])
x[..., False] # same thing

布爾值指定索引,就像數字0或1一樣。


在評論中回答您的問題

這首先看起來很神奇

a = np.array([[1, 2], [3, 4]])
a[..., [True, True]]  # = [[2,2],[4,4]]

但是當我們將其視為

a[..., [1,1]] # = [[2,2],[4,4]]

看起來不那么令人印象

同理:

b = array([[1,2,3],[4,5,6]])
b[...,[2,2]] # = [[3,3],[5,5]]

應用省略號規則后; 真假抓取列索引,就像0,1或17一樣


用於復雜索引的布爾數組

有一些微妙的差異(bool的類型不同於整數)。 這里可以找到很多毛茸茸的細節 這些似乎沒有代碼中的任何滾動,但它們很有趣,弄清楚numpy索引是如何工作的。

特別是,這一行很可能是你正在尋找的:

將來,布爾數組(例如python bools列表)將始終被視為布爾索引

在這個頁面上,他們討論了布爾數組 ,它作為索引工具非常復雜

用作索引的布爾數組的處理方式與索引數組完全不同。 布爾數組的形狀必須與要索引的數組的初始尺寸相同

省略一點

與整數索引數組的情況不同,在布爾情況下,結果是一個一維數組,其中包含索引數組中與布爾數組中所有真實元素對應的所有元素。 索引數組中的元素始終是迭代的,並以行主(C樣式)順序返回。 結果也與y [np.nonzero(b)]相同。 與索引數組一樣,返回的是數據的副本,而不是切片所獲得的視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM