很難回答你的問題,沒有更多的細節。但它聽起來就像你面對這樣的問題:
>>> a = numpy.arange(2 * 3 * 4 * 5).reshape(2, 3, 4, 5)
>>> mask = a[0,...] > 29
>>> numpy.ma.MaskedArray(a, mask)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/
Versions/2.7/lib/python2.7/site-packages/numpy/ma/core.py",
line 2706, in __new__
raise MaskError, msg % (nd, nm)
numpy.ma.core.MaskError: Mask and data not compatible: data size is 120,
mask size is 60.
一個簡單的解決方案(如果這確實是你的問題)將擴大使用沿着該concatenate
時間維度的面具。因此,舉例來說,如果第一軸是時間維度,你可以這樣做(其中reps
等於要重複面膜的次數;在這種情況下,2
):
>>> numpy.ma.MaskedArray(a, numpy.concatenate([mask] * reps, axis=0))
masked_array(data =
[[[[0 1 2 3 4]
[5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
[[20 21 22 23 24]
[25 26 27 28 29]
[-- -- -- -- --]
[-- -- -- -- --]]
[[-- -- -- -- --]
[-- -- -- -- --]
[-- -- -- -- --]
[-- -- -- -- --]]]
[[[60 61 62 63 64]
[65 66 67 68 69]
[70 71 72 73 74]
[75 76 77 78 79]]
[[80 81 82 83 84]
[85 86 87 88 89]
[-- -- -- -- --]
[-- -- -- -- --]]
[[-- -- -- -- --]
[-- -- -- -- --]
[-- -- -- -- --]
[-- -- -- -- --]]]],
mask =
[[[[False False False False False]
[False False False False False]
[False False False False False]
[False False False False False]]
[[False False False False False]
[False False False False False]
[ 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]]]
[[[False False False False False]
[False False False False False]
[False False False False False]
[False False False False False]]
[[False False False False False]
[False False False False False]
[ 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 = 999999)
你能給一個示例輸入和期望輸出的簡單示例?這將有助於(我們中的一些人)能夠回答你的問題。 – BlackVegetable