Numpy Array python尺寸均匀

时间:2015-05-22 10:43:32

标签: python arrays numpy scikit-learn

我有二维数组,一维有15个元素,第二维有可变长度

例如

>>print abc.size()
15
>>print abc[0].size()
5873
>>print abc[1].size()
9825

如何使用numpy或skikit稀疏数组使数组维度均匀。数据是图像的特征。

2 个答案:

答案 0 :(得分:1)

假设你想要将所有数组对齐到左边,并用零填充到右边,那么你可以先用

找到最大长度
install.packages("phytools")

library(phytools)
MyTree <- read.newick("my_file.dnd")
png("my_file2.png")
plot(MyTree)
dev.off()

然后使用zeros填充:

max_len = max([abc[i].size() for for i in range(abc.size())])

答案 1 :(得分:1)

我们在这里有两种可能的情况:

  1. abc图片的列表,每张图片abc[i]都是图片i的一系列生猪特征。

  2. abc一个图片,每个abc[i]是图片的 i -th hog功能

    < / LI>

    对于第一种情况,图像大小或生猪参数(邻居的大小)因图像而异,因此您需要调整参数以便为所有图像正确计算生猪特征(如果您想要固定大小的描述符)。

    对于第二种情况,您的生猪计算不正确(不应该发生同一图像的生猪描述符的大小不同)。

    因此,在任何情况下,都无法resizing您的数组。你需要修复你的生猪计算。

    编辑:与您的问题相关,您有一个不同大小的图像数据集。这是两种可能的常用方法,用于使用hog描述符进行图像分类。但首先,快速概述HOG:

    • HOG将图像分成M x N每个大小为m x n的窗口,并在该窗口中计算具有固定W个数量(方向数)的直方图定向梯度。因此,您最终会获得M x N x W个功能。功能通常在尺寸为K x WK = M x N的2D矢量中展平。

    现在,对于分类,有两种常见的方法:

    1. 将图像的所有功能合二为一,即对K个功能执行平均(或加权平均或标准),最后得到一个大小为W的向量对于每个图像(方向的数量)。

    2. 为了保留(或多或少)特征的空间关系,另一种更常见的方法是连接所有特征,以便最终得到一个大小为Z的扁平1D向量,其中{ {1}} /

    3. 根据您的数据,我认为您正在尝试执行第二步。您遇到的问题是图像的大小不同,因此,对于固定的窗口大小Z = K x W,要素的数量因图像而异。

      您可以通过修复所需功能的数量m x n来修复,并为给定图像计算M x Nm = height / M并使用该计算器计算HOG描述符自定义n = width / N窗口大小(每个图像都不同)。这样,您最终会得到m x n向量,每个图像都具有相同的K = M x N(但窗口大小不同)。

      使用固定K并因此修复K,您就可以执行分类。

      我不知道您使用哪个库来计算HOG,但Z窗口大小参数应该很容易为每个图像手动设置。

      希望它有所帮助!