我有一個 ND 陣列,我想按值洗掉特定的行,該怎么做?目前,輸出是一個空串列。
import numpy as np
def delete_item(array, item):
new_a = np.delete(array, np.where(array == item), axis=0)
return new_a
a = np.array([[1, 1, 1], [85, 32, 531], [78, 91, 79]])
new_array = delete_item(a, [1, 1, 1]) # -> it returns empty list []
"""
The output is:
[]
What i want is:
[[85, 32, 531],
[78, 91, 79]]
"""
print(new_array)
uj5u.com熱心網友回復:
這是一種可能性:
def delete_item(array, item):
new_a = array.copy()
return new_a[(array != item).any(1)]
# or
# return np.delete(array, np.where((array == item).all(1))[0], axis=0)
a = np.array([[1, 1, 1], [85, 32, 531], [78, 91, 79]])
new_array = delete_item(a, [1, 1, 1])
輸出:
array([[ 85, 32, 531],
[ 78, 91, 79]])
uj5u.com熱心網友回復:
問題出在您的比較運算子中where。這有效:
def delete_item(array, item):
new_a = np.delete(array, np.all(array == item, axis=1), axis=0)
return new_a
最初,array == item給出:
[[ True True True]
[False False False]
[False False False]]
它適當地提供了逐個元素的比較廣播[1, 1, 1]。使用np.all(array == item, axis=1))給出:
[ True False False]
這就是你想要的。事實上,您不需要np.where.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/488973.html
