2 回答

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊
波浪號(hào)操作是 numpy 的一部分,是 numpy.invert 的快捷方式。
通過使用列表理解,是一個(gè)Python列表,它不支持此操作。flag_good
例如,您可以將列表轉(zhuǎn)換為 Numpy 數(shù)組,然后使用 invert 函數(shù)。flag_good
>>> flag_bad = ~np.array(flag_good)
>>> flag_bad
array([False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, True, False, True, False, False, False, False, False,
True, False, False, False, False, False])
或者,您可以使用矢量化并直接返回Numpy數(shù)組,其中函數(shù)按元素調(diào)用,而不是使用列表推導(dǎo)。
>>> flag_good = np.vectorize(lambda x: x.isdigit())(arr2)
>>> flag_bad = ~flag_good
>>> flag_bad
array([False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, True, False, True, False, False, False, False, False,
True, False, False, False, False, False])

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
我覺得你可以從一開始就解決問題,編輯你的列表理解。
flag_bad = [not(element.isdigit()) for element in arr2]
不過,為了回答你的問題,我會(huì)這樣做:
import numpy as np
input_list = [1,2,3,1,5,2,3,4,2,
4,1,3,4,1,2,5,3,2,
1,"?",1,"n",3,2,5,
1,2,"Nan",3,2,2,4,3]
# calculate the median
median = int(np.median([elt for elt in input_list if type(elt) is int]))
# replace elements of the list only if you have a non-int
output_array = np.array([elt if type(elt) is int else median for elt in input_list])
print(output_array)
輸出:
[1 2 3 1 5 2 3 4 2 4 1 3 4 1 2 5 3 2 1 2 1 2 3 2 5 1 2 2 3 2 2 4 3]
添加回答
舉報(bào)