【问题标题】:How to create a N-dimentional feature vector in python如何在python中创建一个N维特征向量
【发布时间】:2020-09-19 04:56:06
【问题描述】:

我的图像有 20 个像素值,我想将它们存储在 20D 特征向量中,而不是 20 长度特征向量中。我是 Python 新手,所以我不知道在 Python 中是否将常规数组视为 n 维向量,或者我需要以某种方式对单个数组进行向量化。这些是像素值:

[245, 247, 199, 199, 210, 213, 216, 196, 225, 
    199, 189, 189, 195, 221, 225, 201, 221, 201, 216, 222]

我希望将它们变成一个 20d 维度向量,我将如何进行呢?

【问题讨论】:

  • 在你看来,20D 特征向量和 20 长度特征向量有什么区别?为什么不直接使用列表?

标签: python image numpy data-structures feature-extraction


【解决方案1】:

如果我理解正确,您的解决方案数组的形状应该是 (20,1)。为此,np.reshape 是最快和最简单的方法。执行此操作的代码如下:

np.reshape(your_array,(20,1))

【讨论】:

    【解决方案2】:

    有几种方法可以做到这一点。您可以将其保留为列表:

    l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    [[i] for i in l]
    

    或者:

    list(map(lambda x: [x], l))
    

    输出:

    Out[21]: [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]]
    

    或使用多种方法之一向numpy 数组添加维度:

    import numpy as np
    
    arr = np.array(l)
    

    所有这些都是等价的:

    arr[Ellipsis, None]
    
    np.expand_dims(arr, -1)
    
    np.reshape(-1, 1)
    

    输出:

    array([[ 1],
           [ 2],
           [ 3],
           [ 4],
           [ 5],
           [ 6],
           [ 7],
           [ 8],
           [ 9],
           [10]])
    

    【讨论】:

      【解决方案3】:

      您可以处理每个值,然后将其转换为 n 维向量以获得 20 维向量化数组。

      def convertN(arr):
          #create n-dimensional arr
          #Return n-dimensional arr
      
      input =[245,247,199...216,222]
      
      for i,v in enumerate(input):
          input[i] = convertN(v)
      
      print(input)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-11
        • 2011-12-11
        • 2018-01-15
        • 1970-01-01
        • 1970-01-01
        • 2015-10-20
        • 2022-06-14
        • 1970-01-01
        相关资源
        最近更新 更多