如何在 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)
我有一个图像的 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)