我有二维数组,一维有15个元素,第二维有可变长度
例如
>>print abc.size()
15
>>print abc[0].size()
5873
>>print abc[1].size()
9825
如何使用numpy或skikit稀疏数组使数组维度均匀。数据是图像的特征。
答案 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)
我们在这里有两种可能的情况:
abc
是图片的列表,每张图片abc[i]
都是图片i
的一系列生猪特征。
abc
是一个图片,每个abc[i]
是图片的 i -th hog功能
对于第一种情况,图像大小或生猪参数(邻居的大小)因图像而异,因此您需要调整参数以便为所有图像正确计算生猪特征(如果您想要固定大小的描述符)。
对于第二种情况,您的生猪计算不正确(不应该发生同一图像的生猪描述符的大小不同)。
因此,在任何情况下,都无法resizing
您的数组。你需要修复你的生猪计算。
编辑:与您的问题相关,您有一个不同大小的图像数据集。这是两种可能的常用方法,用于使用hog描述符进行图像分类。但首先,快速概述HOG:
M x N
每个大小为m x n
的窗口,并在该窗口中计算具有固定W
个数量(方向数)的直方图定向梯度。因此,您最终会获得M x N x W
个功能。功能通常在尺寸为K x W
且K = M x N
的2D矢量中展平。 现在,对于分类,有两种常见的方法:
将图像的所有功能合二为一,即对K
个功能执行平均(或加权平均或标准),最后得到一个大小为W
的向量对于每个图像(方向的数量)。
为了保留(或多或少)特征的空间关系,另一种更常见的方法是连接所有特征,以便最终得到一个大小为Z
的扁平1D向量,其中{ {1}} /
根据您的数据,我认为您正在尝试执行第二步。您遇到的问题是图像的大小不同,因此,对于固定的窗口大小Z = K x W
,要素的数量因图像而异。
您可以通过修复所需功能的数量m x n
来修复,并为给定图像计算M x N
和m = height / M
并使用该计算器计算HOG描述符自定义n = width / N
窗口大小(每个图像都不同)。这样,您最终会得到m x n
向量,每个图像都具有相同的K = M x N
(但窗口大小不同)。
使用固定K
并因此修复K
,您就可以执行分类。
我不知道您使用哪个库来计算HOG,但Z
窗口大小参数应该很容易为每个图像手动设置。
希望它有所帮助!