如何在 python 中创建 N 维特征向量

How to create a N-dimentional feature vector in python

我有一个图像的 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]

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

如果我没理解错的话,你的解数组的形状应该是 (20,1)。为此,np.reshape 是最快捷、最简单的方法。执行此操作的代码如下:

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

有几种方法可以做到这一点。您可以在将其保存为列表的同时执行此操作:

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

您可以处理每个值,然后将其转换为 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)