【问题标题】:Making new Numpy array with indexes of another Numpy array使用另一个 Numpy 数组的索引创建新的 Numpy 数组
【发布时间】:2018-12-07 16:10:28
【问题描述】:

我有一个 10 x N 数组,如下所示:

[[ 0.  1.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  1.  0.  0.]
 [ 1.  0.  0. ...,  0.  0.  0.]
 ..., 
 [ 0.  0.  0. ...,  1.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  1.]
 [ 0.  0.  0. ...,  0.  0.  1.]]

我想要一个以下 1 x N 格式的 Numpy 数组,其中新数组中的每个元素都是 10 x N 数组中用“1”填充的索引的值。

例如,该过程会将上面的内容转换为数组:

[[ 1.  7.  0. ...,  7,  9.  9.]]

我在使用该功能方面取得了一些成功:

np.where(array > 0)[0][0]

这为我的最终数组提供了一个值,但我以所需格式填充数组的尝试没有奏效。此外,我的实现并不是很pythonic。以上问题有pythonic解决方案吗?

【问题讨论】:

    标签: arrays numpy element


    【解决方案1】:

    设置

    a = np.array([[0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
                  [1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                  [0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
                  [0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
                  [0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
                  [0, 0, 0, 0, 0, 0, 1, 0, 0, 0]])
    

    你只关心,因为你的第二个数组是一维的,现在你正在从numpy.where

    获取

    如果你能保证每行只有一个1,就从numpy.where的输出中抓取列:

    np.where(a==1)[1]
    

    array([5, 0, 2, 4, 2, 6], dtype=int64)
    

    【讨论】:

    • 完美!谢谢! :D
    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 2016-03-09
    • 2018-12-20
    • 1970-01-01
    • 2018-10-25
    相关资源
    最近更新 更多