我有一个numpy蒙面数组:
masked_array(data =
[[-- -- -- ..., -- -- --]
[-- -- -- ..., -- -- --]
[-- -- -- ..., -- -- --]
...,
[-- -- -- ..., -- -- --]
[-- -- -- ..., -- -- --]
[-- -- -- ..., -- -- --]],
mask =
[[ True True True ..., True True True]
[ True True True ..., True True True]
[ True True True ..., True True True]
...,
[ True True True ..., True True True]
[ True True True ..., True True True]
[ True True True ..., True True True]],
fill_value = 65536.0)
当我这样做时:
numpy.unique(arr.data)
我明白了:
array([ 0.00000000e+00, 1.00000000e+00, 2.00000000e+00,
3.00000000e+00, 4.00000000e+00, 5.00000000e+00,
6.55360000e+04])
如何在arr.data中获取屏蔽值?
答案 0 :(得分:1)
当我这样做时:
numpy.unique(arr.data)
如何在arr.data中获取屏蔽值?
arr.data
与蒙面值无关 - 相反,它是一个普通的老numpy.array:
import numpy as np
import numpy.ma as ma
my_data = np.array([10])
print(repr(my_data))
x = ma.array(
data = my_data,
mask = [True],
fill_value = 65536.0
)
print(repr(x))
print(repr(x.data))
--output:--
array([10])
masked_array(data = [--],
mask = [ True],
fill_value = 65536)
array([10])
并且,当您在数组上调用unique()
时,您将获得作为一维数组的唯一元素:
import numpy as np
import numpy.ma as ma
data = np.array([
[1.0, 2.0, 3.0],
[4.0, 5.0, 65536.0],
])
print(np.unique(data))
--output:--
[ 1.00000000e+00 2.00000000e+00 3.00000000e+00 4.00000000e+00
5.00000000e+00 6.55360000e+04]
这是你的蒙面数组:
data = np.array([
[1.0, 2.0, 3.0],
[4.0, 5.0, 65536.0],
])
mask = [
[True, True, True],
[True, True, True],
]
x = ma.array(
data=data,
mask=mask,
fill_value = 65536.0
)
print(repr(x))
masked_array(data =
[[-- -- --]
[-- -- --]],
mask =
[[ True True True]
[ True True True]],
fill_value = 65536.0)
print(
np.unique(x.data)
)
[ 1.00000000e+00 2.00000000e+00 3.00000000e+00 4.00000000e+00
5.00000000e+00 6.55360000e+04]