簡體   English   中英

優化嵌套numpy數組上的邏輯運算

[英]Optimizing logical operations on nested numpy arrays

我從一個numpy數組的numpy數組開始,其中每個內部numpy數組可以具有不同的長度。 下面是一個示例:

import numpy as np
a = np.array([1,2,3])
b = np.array([4,5])
c = np.array([a, b])

print c
[[1 2 3] [4 5]]

我希望能夠對數組c中每個元素中的每個元素執行布爾操作,但是當我嘗試獲取以下值錯誤時:

print c > 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. 
Use a.any() or a.all()

我希望能夠得到結果:

[[True True True] [True True]]

無需在外部數組上使用for循環或迭代。 這可能嗎?如果可以,我該如何完成呢?

我可以想到兩種廣泛的方法,要么填充數組,以便可以使用單個2d數組代替嵌套數組,要么將嵌套數組視為數組列表。 第一個看起來像這樣:

import numpy as np
a = np.array([1,2,3])
b = np.array([4,5, -99])
c = np.array([a, b])

print c.shape
# (2, 3)
print c > 0
# [[ True  True  True]
#  [ True  True False]]

或執行類似的操作:

import numpy as np
a = np.array([1,2,3])
b = np.array([4,5])
c = np.array([a, b])

out = [i > 0 for i in c]
print out
# [array([ True,  True,  True], dtype=bool), array([ True,  True], dtype=bool)]

如果不選擇填充,則實際上您可能會發現數組列表的行為比數組數組更好。

暫無
暫無

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

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