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

问题描述 投票:0回答:2

我有一个图像的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的二维向量,我应该怎么做?

python image numpy data-structures feature-extraction
2个回答
1
投票

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

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

2
投票

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

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]])
© www.soinside.com 2019 - 2024. All rights reserved.