我想创建一个函数,当它提供一个数组时,它返回一个相同形状的数组,但是所有零都期望1个值是最大值 . 例如 . 像这样的数组:
my_array = np.arange(9).reshape((3,3))
[[ 0. 1. 2.]
[ 3. 4. 5.]
[ 6. 7. 8.]]
当在函数中传递时,我希望它像这样:
[[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 8.]]
exeption:
当有许多相等的最大值时,我只需要其中一个,其余的就是零(顺序无关紧要) .
对于如何以优雅的方式制作这个更高效的方法我是多么无能为力,你会怎么做?
1 回答
为了提高效率,请使用
array-initialization
和argmax
获取最大索引(如果多于一个,则首先对其进行线性索引) -我们也可以使用
ndarray.ravel()
代替ndaarray.flat
,我认为性能数字可以比较 .对于这个sparsey输出,为了提高内存效率和性能,您可能需要使用
sparse
矩阵,尤其是对于大型数组 . 因此,对于稀疏矩阵输出,我们将有一个替代的,如此 -样品运行 -
大阵列上的运行时测试 -