【发布时间】:2016-11-08 00:04:56
【问题描述】:
我有一个关于使用布尔掩码屏蔽/切片 2D numpy 数组的问题。这里我有一个np 2D-array x,即
x=np.tile(np.arange(10).reshape(10,1),(1,10))
[[0 0 0 0 0 0 0 0 0 0]
[1 1 1 1 1 1 1 1 1 1]
[2 2 2 2 2 2 2 2 2 2]
[3 3 3 3 3 3 3 3 3 3]
[4 4 4 4 4 4 4 4 4 4]
[5 5 5 5 5 5 5 5 5 5]
[6 6 6 6 6 6 6 6 6 6]
[7 7 7 7 7 7 7 7 7 7]
[8 8 8 8 8 8 8 8 8 8]
[9 9 9 9 9 9 9 9 9 9]]
x 是一个 10 x 10 的数组,其每一列都是相同的。如果有更好的方法来生成这个,你能指出来吗?谢谢。然后是一个布尔数组,
y=(x!=np.arange(10))
[[False True True True True True True True True True]
[ True False True True True True True True True True]
[ True True False True True True True True True True]
[ True True True False True True True True True True]
[ True True True True False True True True True True]
[ True True True True True False True True True True]
[ True True True True True True False True True True]
[ True True True True True True True False True True]
[ True True True True True True True True False True]
[ True True True True True True True True True False]]
现在,我想得到这样的结果数组,
[[1 0 0 0 0 0 0 0 0 0]
[2 2 1 1 1 1 1 1 1 1]
[3 3 3 2 2 2 2 2 2 2]
[4 4 4 4 3 3 3 3 3 3]
[5 5 5 5 5 4 4 4 4 4]
[6 6 6 6 6 6 5 5 5 5]
[7 7 7 7 7 7 7 6 6 6]
[8 8 8 8 8 8 8 8 7 7]
[9 9 9 9 9 9 9 9 9 8]]
移除x中y对应位置值为False的元素,返回新的二维数组。那么在这种情况下我怎么能得到这个呢?
非常感谢您的帮助。
【问题讨论】: