gpt4 book ai didi

python - 用中值替换 numpy 数组中的零

转载 作者:太空狗 更新时间:2023-10-29 17:03:14 31 4
gpt4 key购买 nike

我有一个像这样的 numpy 数组:

foo_array = [38,26,14,55,31,0,15,8,0,0,0,18,40,27,3,19,0,49,29,21,5,38,29,17,16]

我想用整个数组的中值替换所有的零(其中零值不包括在中值的计算中)

到目前为止,我正在做这件事:

foo_array = [38,26,14,55,31,0,15,8,0,0,0,18,40,27,3,19,0,49,29,21,5,38,29,17,16]
foo = np.array(foo_array)
foo = np.sort(foo)
print "foo sorted:",foo
#foo sorted: [ 0 0 0 0 0 3 5 8 14 15 16 17 18 19 21 26 27 29 29 31 38 38 40 49 55]
nonzero_values = foo[0::] > 0
nz_values = foo[nonzero_values]
print "nonzero_values?:",nz_values
#nonzero_values?: [ 3 5 8 14 15 16 17 18 19 21 26 27 29 29 31 38 38 40 49 55]
size = np.size(nz_values)
middle = size / 2
print "median is:",nz_values[middle]
#median is: 26

有没有一种巧妙的方法可以使用 numpy 语法来实现这一点?

谢谢

最佳答案

这个解决方案利用了 numpy.median:

import numpy as np
foo_array = [38,26,14,55,31,0,15,8,0,0,0,18,40,27,3,19,0,49,29,21,5,38,29,17,16]
foo = np.array(foo_array)
# Compute the median of the non-zero elements
m = np.median(foo[foo > 0])
# Assign the median to the zero elements
foo[foo == 0] = m

请注意,您的数组(没有零)的中位数是 23.5,但正如所写的那样,它保持在 23。

关于python - 用中值替换 numpy 数组中的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17056325/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com