【问题标题】:Numpy: placing values into an 1-of-n array based on indices in another arrayNumpy:根据另一个数组中的索引将值放入 1-of-n 数组中
【发布时间】:2012-10-19 09:07:34
【问题描述】:

假设我们有两个数组:一些值,例如array([1.2, 1.4, 1.6]) 和一些索引(比如说,array([0, 2, 1]))我们的输出预期是放入更大数组中的值,由索引“寻址”,所以我们会得到

array([[ 1.2,  0. ,  0. ],
       [ 0. ,  0. ,  1.4],
       [ 0. ,  1.6,  0. ]])

有没有办法在没有循环的情况下以一种不错、快速的方式做到这一点?

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    我们如何针对更高维度进行修改?例如,a 是 5x4x3 数组,b 和 vals 是 5x4 数组。 那么我们如何修改语句 a[r_[:len(b)],b] = vals 呢?

    【讨论】:

      【解决方案2】:

      a = zeros((3,3))
      b = array([0, 2, 1])
      vals = array([1.2, 1.4, 1.6])
      

      您只需要索引它(在aranger_ 的帮助下):

      >>> a[r_[:len(b)], b] = vals
      
      
      array([[ 1.2,  0. ,  0. ],
             [ 0. ,  0. ,  1.4],
             [ 0. ,  1.6,  0. ]])
      

      【讨论】:

      • 作为替代方案:a[zip(*enumerate(b))]=vals
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-07
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 2011-07-27
      • 1970-01-01
      相关资源
      最近更新 更多