Python 2.7 要创建未知维度的空矩阵并附加特征向量吗

Python 2.7 要创建未知维度的空矩阵并附加特征向量吗,python-2.7,numpy,scikit-image,Python 2.7,Numpy,Scikit Image,我想把HoG特征向量附加到未知维数的空矩阵上。是否需要提前指定矩阵的尺寸?我在python中尝试了一些代码,但它说所有的输入数组必须具有相同的维度 import matplotlib.pyplot as plt from skimage.feature import hog from skimage import data, exposure, img_as_float from skimage import data import numpy as np from scipy import l

我想把HoG特征向量附加到未知维数的空矩阵上。是否需要提前指定矩阵的尺寸?我在python中尝试了一些代码,但它说所有的输入数组必须具有相同的维度

import matplotlib.pyplot as plt
from skimage.feature import hog
from skimage import data, exposure, img_as_float
from skimage import data
import numpy as np
from scipy import linalg
import cv2
import glob


shape = (16576, 1)
X = np.empty(shape)
print X.shape
hog_image = np.empty(shape)
hog_image_rescaled = np.empty(shape)

for img in glob.glob("/home/madhuri/pythoncode/faces/*.jpg"):
   n= cv2.imread(img)
   gray = cv2.cvtColor(n, cv2.COLOR_RGB2GRAY)
   hog_image = hog(gray, orientations=9, pixels_per_cell=(16, 16),     
                   cells_per_block=(3, 3), visualise=False)
   hog_image_rescaled = exposure.rescale_intensity(hog_image,
                                                   in_range=(0,10))  
   X = np.append(X, hog_image_rescaled, axis=1)

print 'X is'
print np.shape(X)
现在,
X
将是重新缩放的图像列表。这些元素现在可以连接到任何一个维度都是合适的:

np.concatenate(X, axis=1)
np.stack(X)
# etc
In [977]: np.empty((2,3))
Out[977]: 
array([[1.48e-323, 1.24e-322, 1.33e-322],
       [1.33e-322, 1.38e-322, 1.38e-322]])
In [978]: np.append(_, np.zeros((2,1)), axis=1)
Out[978]: 
array([[1.48e-323, 1.24e-322, 1.33e-322, 0.00e+000],
       [1.33e-322, 1.38e-322, 1.38e-322, 0.00e+000]])
列表模型

alist = []
for ....
    alist.append(...)
不能很好地转换为数组
np.append
np.concatenate
的一个封面,它制作了一个新数组,比列表append更昂贵。为这样的循环定义一个好的开始“空”数组是很棘手的<代码>np。空的不合适:

np.concatenate(X, axis=1)
np.stack(X)
# etc
In [977]: np.empty((2,3))
Out[977]: 
array([[1.48e-323, 1.24e-322, 1.33e-322],
       [1.33e-322, 1.38e-322, 1.38e-322]])
In [978]: np.append(_, np.zeros((2,1)), axis=1)
Out[978]: 
array([[1.48e-323, 1.24e-322, 1.33e-322, 0.00e+000],
       [1.33e-322, 1.38e-322, 1.38e-322, 0.00e+000]])

31 X=np。追加(X,hog\u image\u rescaled,axis=1)值错误:所有输入数组的维数必须相同这是我得到的错误。
X
有两个维数。
hog\u image\u rescaled
有多少维度?没有维度未知的numpy数组。也不要将
np.empty
与空列表
[]
混淆。不要在循环中使用
np.append
。最好不要使用
np.append