這個問題在這里已經有了答案: 如何在不知道索引的情況下從 numpy 陣列中洗掉物件 5 個答案 3天前關閉。
假設我有一個 numpy 字串陣列:
arr = np.array(['cat', 'dog', 'bird', 'swiss army knife'])
我想洗掉字串“瑞士軍刀”。
做這個的最好方式是什么?
看起來應該非常簡單,但我還沒有找到不涉及排序和/或查找元素索引并使用它來分割所需陣列的選擇的解決方案。
np.delete似乎不適用于字串。
uj5u.com熱心網友回復:
我希望這對你有用。
import numpy as np
arr = np.array(['cat', 'dog', 'bird', 'swiss army knife'])
result = np.where(arr=='swiss army knife')[0]
arr = np.delete(arr,result)
print(arr)
uj5u.com熱心網友回復:
只是通過掩蔽:
mask = arr != 'swiss army knife'
result = arr[mask]
# ['cat' 'dog' 'bird']
或在一行中arr[arr != 'swiss army knife']
uj5u.com熱心網友回復:
沒有方法可以根據陣列的值從 np.array 中洗掉一個值。Numpy 基于索引的洗掉擦除值。所以,在這種情況下,它會像:
arr = np.array(['cat', 'dog', 'bird', 'swiss army knife'])
arr = np.delete(arr, 3)
相反,您可以使用:
arr = np.array(['cat', 'dog', 'bird', 'swiss army knife'])
arr = arr[arr != 'swiss army knife']
或者
arr = np.array(['cat', 'dog', 'bird', 'swiss army knife'])
arr = np.delete(arr, np.argwhere(arr == 'swiss army knife'))
uj5u.com熱心網友回復:
arr = np.array(['cat', 'dog', 'bird', 'swiss army knife'])
new_arr = np.array([i for i in arr if i != 'swiss army knife'])
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/468113.html
上一篇:創建具有多個資料序列的字符向量
