Python 2d boolean array ลดลง

DnRng 10/15/2018. 5 answers, 371 views
python arrays reduction

ฉันมีอาร์เรย์ 2D ประกอบด้วยค่าบูลีน (True, False) ฉันต้องการรวมอาร์เรย์กับ 1D ตามฟังก์ชันตรรกะของเนื้อหา

เช่น Input:

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

Output (logical AND):

[False,
 False,
 True] 

วิธีนี้จะทำโดยไม่ต้องห่วง?

5 Answers


timgeb 10/15/2018.

ฉันสมมติว่าคุณต้องการใช้ ANDs ตรรกะกับแถว คุณสามารถใช้ numpy.all

>>> import numpy as np
>>> a = np.array([[True, True, False], [False, False, False], [True, True, True]])
>>> a
array([[ True,  True, False],
       [False, False, False],
       [ True,  True,  True]])
>>> 
>>> np.all(a, axis=1)
array([False, False,  True]) 

สำหรับโซลูชันที่ไม่มี numpy คุณสามารถใช้ operator.and_ และ functools.reduce ได้

>>> from operator import and_
>>> from functools import reduce
>>> 
>>> lst = [[True, True, False], [False, False, False], [True, True, True]]
>>> [reduce(and_, sub) for sub in lst]
[False, False, True] 

แก้ไข: จริง reduce เป็นบิตซ้ำซ้อนในกรณีนี้โดยเฉพาะ

>>> [all(sub) for sub in lst]
[False, False, True] 

ทำงานได้เช่นกัน


Woody1193 10/15/2018.

คุณสามารถใช้ Python ในตัวด้วยวิธีการ all มีความเข้าใจในรายการ:

[all(x) for x in my_list] 

หากยังมีข้อ จำกัด สำหรับคุณอยู่ให้รวมกับ map :

map(all, my_list) 

โปรดทราบว่า map จะไม่แสดงรายการใน Python 3 ถ้าคุณต้องการให้รายการเป็นผลลัพธ์คุณสามารถเรียก list(map(all, my_list)) แทนได้


Bazingaa 10/15/2018.

คุณสามารถทำได้โดยไม่ต้อง NumPy เกินไป นี่คือวิธีแก้ปัญหาโดยใช้ความเข้าใจในรายการ คำอธิบาย: จะวนรอบรายการย่อยและแม้ว่าหนึ่งในรายการในแต่ละรายการย่อยเป็น False ผลลัพธ์จะ False อื่น True

inp = [[True, True, False],[False, False, False],[True, True, True]]
out = [False if False in i else True for i in inp]
print (out)

# [False, False, True] 

ทางเลือก (น้อย verbose) ตามที่แนะนำโดย Jean ด้านล่าง:

out = [False not in i for i in inp] 

Willem Van Onsem 10/15/2018.

คุณสามารถทำสิ่งนี้ได้ด้วย ด้วย ฟังก์ชัน numpy.all :

>>> import numpy as np
>>> arr = np.array([[True, True, False],
... [False, False, False],
... [True, True, True]]
... )
>>> np.all(arr, axis=1)
array([False, False,  True]) 

ดังนั้นองค์ประกอบ i -th จึงเป็น True ถ้าองค์ประกอบ all ของแถว i -th เป็น True และ False อย่างอื่น โปรดทราบว่ารายการควรเป็น rectangular (รายการย่อยทั้งหมดควรมีจำนวนบูลีน same )

ใน "pure" Python คุณสามารถใช้ฟังก์ชัน all เช่น:

>>> data = [[True, True, False], [False, False, False], [True, True, True]]
>>> list(map(all, data))
[False, False, True] 

วิธีนี้จะทำงานได้ดีถ้าเมทริกซ์ "" not รูปสี่เหลี่ยมผืนผ้า โปรดทราบว่าสำหรับรายการย่อยที่ empty นี้จะเป็นค่า True เนื่องจากองค์ประกอบ all ในรายการย่อยที่ว่างเปล่าเป็น True


slider 10/15/2018.

นอกจากนี้คุณยังสามารถทำ map และ reduce :

from functools import reduce

l = [[True, True, False],
    [False, False, False],
    [True, True, True]]

final = list(map(lambda x: reduce(lambda a, b: a and b, x), l))
print(final)
# [False, False, True] 

ประโยชน์ที่ได้คือคุณสามารถเปลี่ยนฟังก์ชั่น reduce ทำงานให้เป็นอย่างอื่นได้ (พูดหรือว่าชอบการผจญภัยมากขึ้น)


HighResolutionMusic.com - Download Hi-Res Songs

1 AJR

Birthday Party flac

AJR. 2019. Writer: Adam Met;Jack Met;Ryan Met;Peter Ivers;David Lynch.
2 Loote

Your Side Of The Bed flac

Loote. 2018. Writer: ​Jesse Saint John;Jackson Foote;Emma Lov Block.
3 AJR

100 Bad Days flac

AJR. 2019. Writer: Jack Met;Adam Met;Ryan Met.
4 Joe Jonas

Longer Than I Thought flac

Joe Jonas. 2018. Writer: Patrick Nissley;Jackson Foote;Dave Katz.
5 Loote

Out Of My Head flac

Loote. 2018. Writer: Emma Lov Block;Michael Pollack;Jeremy Dussolliet;Jackson Foote.
6 Iselin Solheim

Anyone Out There flac

Iselin Solheim. 2019. Writer: Iselin Solheim;Max Grahn.
7 Loote

Wish I Never Met You flac

Loote. 2018. Writer: Jackson Foote;Alex Peter Koste;Jeremy Dussolliet;Emma Lov Block.
8 Kim Petras

Heart To Break flac

Kim Petras. 2018. Writer: Cirkut;Aaron Joseph;Dr. Luke;Jacob Kasher;Kim Petras.
9 A L E X

Out On The Trampoline At Night flac

A L E X. 2018. Writer: A L E X.
10 A L E X

I Want To Hold Your Hand flac

A L E X. 2018. Writer: A L E X.
11 A L E X

Field flac

A L E X. 2018. Writer: A L E X.
12 A L E X

Save Me flac

A L E X. 2018. Writer: A L E X.
13 Devin

Summer Lover flac

Devin. 2019. Writer: Tommy Lee James;Stuart Crichton;Oliver Heldens;Nile Rodgers;Devin Guisande.
14 A L E X

9 To 5 flac

A L E X. 2018. Writer: A L E X.
15 A L E X

Skirt flac

A L E X. 2018. Writer: A L E X.
16 Florian Picasso

Midnight Sun (Extended Version) flac

Florian Picasso. 2019.
17 Florian Picasso

Midnight Sun flac

Florian Picasso. 2019.
18 21 Savage

Enzo flac

21 Savage. 2019. Writer: YungLunchBox;Sheck Wes;Offset;Gucci Mane;21 Savage;DJ Snake.
19 Tales Of Ratatösk

Battle Of The Doomed Gods 320kbps

Tales Of Ratatösk. 2019.
20 Tales Of Ratatösk

Andro 320kbps

Tales Of Ratatösk. 2019.

Related questions

Hot questions

Language

Popular Tags