簡體   English   中英

將預定義的 2d 數組轉換為 2d bool 數組

[英]Converting predefined 2d Array into 2d bool array

我得到了一個預定義的數組

a = [[2 3 4]
     [5 6 7]
     [8 9 10]]

我的問題是將此數組轉換為所有偶數都為真的布爾數組。 任何幫助表示贊賞!

我會使用 numpy,它非常簡單:

import numpy as np

a = [[2, 3, 4],
     [5, 6, 7],
     [8, 9, 10]]
a = np.asarray(a)
(a % 2) == 0

使用 Numpy 執行以下操作:

 import numpy as np a = [[2, 3, 4], [5, 6, 7], [8, 9, 10]] aBool=(np.asarray(a)%2==0)

變量 aBool 將包含 True,其中有一個偶數值和 False 一個奇數值。

 array([[ True, False, True], [False, True, False], [ True, False, True]])

這是從這里找到的答案改編的:

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

answer = (a[a%2==0])
print(answer)

這基本上就是安德魯所說的,但沒有使用 NumPy

如果您有興趣獲取布爾值並測試 NumPy 數組中的某些條件,您可以在此處找到一篇簡潔的文章

這可以簡單地使用一行來完成(如果你不想使用 numpy):

[[i % 2 == 0 for i in sublist] for sublist in a]

>>> [[True, False, True], [False, True, False], [True, False, True]]

這里, i % 2表示模運算符,它給出第一個數字除以第二個數字時的余數。 在這種情況下,對於偶數i % 2 = 0 ,對於奇數i % 2 = 1 兩個 = 符號表示表達式被評估為布爾值。

兩個for循環遍歷 2D 列表中的每個列表。

如果您發現此格式更易於理解,則可以對其進行擴展,但它本質上執行相同的操作:

>>> newlist = []
>>> for sublist in a:
        partial_list = []
        for i in sublist:
                partial_list.append(i % 2 == 0)
        newlist.append(partial_list)


>>> newlist
[[True, False, True], [False, True, False], [True, False, True]]

為什么不提否定:

a = [[2, 3, 4],
     [5, 6, 7],
     [8, 9, 10]]

>>> ~np.array(a)%2
array([[1, 0, 1],
       [0, 1, 0],
       [1, 0, 1]], dtype=int32)

這是一個布爾形式:

>>> ~(np.array(a)%2).astype(bool)
array([[ True, False,  True],
       [False,  True, False],
       [ True, False,  True]])

暫無
暫無

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

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