如何在python中创建一个N次方的特征向量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在python中创建一个N次方的特征向量?相关的知识,希望对你有一定的参考价值。

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

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

我想把它们变成一个20d的二维向量,我应该怎么做?

答案

如果我理解正确的话,你的解数组的形状应该是(20,1)。要做到这一点,np.reshape是最快速和最简单的方法。下面是做这个的代码。

np.reshape(your_array,(20,1))
另一答案

你可以对每个值进行处理,然后将其转换为n维向量,得到20 -D的向量化数组。

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)
另一答案

有几种方法可以做到这一点。你可以在保持它作为一个列表的同时进行处理。

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]])

以上是关于如何在python中创建一个N次方的特征向量?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中从现有 2D 向量中创建具有特定列的新向量

如何在 C++ 中创建向量的向量图?

如何计算一个矩阵的幂

如何在 C++ 中创建类对象的向量?

在C++的模板类中创建向量

如何创建特征向量以使用 open cv 识别字符