[英]zero values to nan values in an array of Python
I have an array with some zero values that i wish to convert in nan values. 我有一个带有一些零值的数组,希望将其转换为nan值。 When i apply the code
当我应用代码
all values become nan 所有的价值观都变得难缠
myarray
array([[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]])
myarray.shape
(64L, 52L)
myarray.max()
4563.666015625
myarray.min()
0.0
i wish to convert zero values in nan. 我希望在nan中转换零值。 I use an example from stackoverflow
我使用来自stackoverflow的示例
a = np.arange(3.0)
a
array([ 0., 1., 2.])
a[a==0] = np.nan
a
array([ nan, 1., 2.])
when i apply the example to my array all values became nan 当我将示例应用于数组时,所有值都变为nan
myarray[myarray == 0.] = nan
myarray
array([[ nan, nan, nan, ..., nan, nan, nan],
[ nan, nan, nan, ..., nan, nan, nan],
[ nan, nan, nan, ..., nan, nan, nan],
...,
[ nan, nan, nan, ..., nan, nan, nan],
[ nan, nan, nan, ..., nan, nan, nan],
[ nan, nan, nan, ..., nan, nan, nan]])
myarray.max()
nan
myarray.min()
nan
It's not that all the values become nan
, it's that (1) you're only looking at the parts that do, and (2) min
and max
don't work well with nan
s. 并不是所有的值都变成
nan
,而是(1)您仅查看起作用的部分,以及(2) min
和max
不适用于nan
s。
For example, if we make an array resembling yours: 例如,如果我们制作一个类似于您的数组:
>>> myarray = np.zeros((64, 52))
>>> myarray[3:-3,3:-3] = np.random.uniform(0, 5000, (64-6,52-6))
>>> myarray
array([[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]])
>>> myarray[myarray==0] = np.nan
>>> myarray
array([[ nan, nan, nan, ..., nan, nan, nan],
[ nan, nan, nan, ..., nan, nan, nan],
[ nan, nan, nan, ..., nan, nan, nan],
...,
[ nan, nan, nan, ..., nan, nan, nan],
[ nan, nan, nan, ..., nan, nan, nan],
[ nan, nan, nan, ..., nan, nan, nan]])
It may look like it's all nan
, but it's not: 看起来好像全是
nan
,但事实并非如此:
>>> myarray[2:5, 2:5]
array([[ nan, nan, nan],
[ nan, 1500.05326562, 4583.70521213],
[ nan, 4896.62420284, 892.83210033]])
You can also use nanmin
and nanmax
, which ignore nan
s: 您还可以使用
nanmin
和nanmax
,它们忽略nan
s:
>>> myarray.min()
nan
>>> myarray.max()
nan
>>> np.nanmin(myarray)
0.60474162939361253
>>> np.nanmax(myarray)
4996.8967777356092
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.