在python中将一个ndarray的元素追加到另一个ndarray时输出错误

时间:2018-09-30 23:14:03

标签: python numpy append numpy-ndarray

我正在从事我的KNN项目,并提供了一个数据集,其中有60,000 training_images和60,000 training_labels,都转换为ndarray。 [training_image]的每个元素表示一个矩阵(图像),[training_labels]的每个元素以1到10范围内的一个数字的形式表示,即[1.0 2.0 7.0 9.0 5.0 ...等。 / p>

我正在编写一个为测试实例设计大多数相似邻居的预测响应的函数。假定该类是每个邻居的最后一个属性。为此,我需要向每个训练数据([training_images]附加[training_labels]的值。但是,当我尝试这样做时,遇到了一些问题:          这是我的代码:

import numpy as np
import operator
import csv
import random
import math
from scipy.io import loadmat
import matplotlib.pyplot as plt

#Loading the data
M = loadmat('x_data.mat')
images_train,images_test,labels_train,labels_test= M['images_train'],M['images_test'],M['labels_train'],M['labels_test']

#just to make all random sequences on all computers the same.
np.random.seed(1)

#randomly permute data points
inds = np.random.permutation(images_train.shape[0])
images_train = images_train[inds]
labels_train = labels_train[inds]

inds = np.random.permutation(images_test.shape[0])
images_test = images_test[inds]
labels_test = labels_test[inds]

for i in images_train:    
        for j in labels_train:
                i = np.append(i,labels_train[j])

所以事情是我再次打印了images_train,看起来没有任何变化。另一方面,如果我这样做

b = labels_train[5]
b = np.append(b,(labels_train[5]))
print b

它给了我理想的输出

所以我不知道循环有什么问题或问题出在哪里。还是通过创建字典来实现我的目标,这是一种更好的方法,其中每个培训标签都将是我training_data的关键?您能帮我指导正确的解决方案吗?

0 个答案:

没有答案