簡體   English   中英

如何從python中的數組列表中刪除一個arry

[英]How to remove an arry from a list of arrays in python

我使用以下 NumPy 數組創建了一個列表

a=np.arange(1,10,1)
b=np.arange(10,19,1)
c=np.arange(19,28,1)

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

#b = [10,11,12,13, 14,15,16, 17,18]

#c =[19,20,21,22,23,24,25,26,27]

list_array = [a,b,c] 

但是,當我嘗試使用 list_array.remove 從列表中刪除任何數組時,出現以下錯誤

list_array.remove(b)
>>ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我的問題是如何從 numpy 數組列表中刪除一個數組?

Python 沒有“where”關鍵字。 您必須先聲明數組,然后聲明數組數組,然后才能輕松刪除。

供您參考,Python 中沒有數組,只有列表,您可以在其中放置您想要的任何類型。 a = ["hello", 2, 6.48]是完全有效的。

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

b = [10,11,12,
     13, 14,15,
     16, 17,18]

c =[19,20,21,
    22,23,24,
    25,26,27]


list_array = [a, b, c]

list_array.remove(b)

print(list_array) #Prints [a, c]

您可以使用np.array_equiv來測試兩個 numpy 數組是否相等。

您將把它與您自己的循環結合起來以實現remove的等效項,例如:

import numpy as np

a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = a+9
c = b+9

list_array = [a,b,c]

for i in range(len(list_array) - 1, -1, -1):
    if np.array_equiv(list_array[i], a):
        list_array.pop(i)

print(list_array)

如果願意,您可以將for語句寫為:

for i in reversed(range(len(list_array))):

但重要的是它向后循環索引。

暫無
暫無

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

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