代码之家  ›  专栏  ›  技术社区  ›  Ahmad

如何在python中将二进制矩阵转换为双极矩阵

  •  0
  • Ahmad  · 技术社区  · 6 年前

    中有一个函数 Keras 要为标签数组生成二进制矩阵,请执行以下操作:

    # Consider an array of 5 labels out of a set of 3 classes {0, 1, 2}:
    > labels
    array([0, 2, 1, 2, 0])
    # `to_categorical` converts this into a matrix with as many
    # columns as there are classes. The number of rows
    # stays the same.
    > to_categorical(labels)
    array([[ 1.,  0.,  0.],
           [ 0.,  0.,  1.],
           [ 0.,  1.,  0.],
           [ 0.,  0.,  1.],
           [ 1.,  0.,  0.]], dtype=float32)
    

    我需要上述功能,但是 -1 而不是零。我找不到任何选项或其他功能来完成它。有什么简单的方法吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Matthieu Brucher    6 年前

    只需重新缩放数据:

    2*to_categorical(labels)-1
    
        2
  •  1
  •   Dani Mesejo    6 年前

    您可以执行以下操作:

    import numpy as np
    
    arr = np.array([[1., 0., 0.],
                    [0., 0., 1.],
                    [0., 1., 0.],
                    [0., 0., 1.],
                    [1., 0., 0.]])
    
    arr[np.isclose(arr, 0)] = -1
    print(arr)
    

    产量

    [[ 1. -1. -1.]
     [-1. -1.  1.]
     [-1.  1. -1.]
     [-1. -1.  1.]
     [ 1. -1. -1.]]