我创建了一个列表列表(每行有784个元素)-这是图像数据28x28矩阵
train_data, train_labels = X[:60000], Y[:60000]
对于模糊图像-这里有两个函数,计算每个像素的新值-基于28x28矩阵中8个相邻元素的平均值(为简单起见,忽略第一/最后一行和第一/最后一列,即从2-26而不是0-27循环)
def new_func(x_train_data,train_data):
for index in range(x_train_data.shape[0]):
imgvector = x_train_data[index].reshape(28, 28)
for iblur in range(2, 27):
for jblur in range(2, 27):
imgvector[iblur][jblur] = getNewVaueofPixel(imgvector, iblur, jblur)
print "blurring complete"
x_train_data[index] = imgvector.reshape(1, 784)
print np.array_equal(x_train_data[index], train_data)
def getNewVaueofPixel(imgvector, iblur, jblur):
pixelval = 0.0
for ib in range(-1, 2):
for jb in range(-1, 2):
pixelval = pixelval + imgvector[iblur + ib][jblur + jb]
outval = round(pixelval / 8.0, 12)
return ('{:.12f}'.format(outval)).rstrip('0') or 0.
函数调用如下:
x_train_data = train_data[:1]
x_train_labels = train_labels[0]
new_func(x_train_data,train_data[0])
函数中的下一行返回true,但当我查看x\u train\u data[index]的值时,它与原始值不同,并且已正确更新。你知道吗
print np.array_equal(x_train_data[index], train_data)
我花了12个多小时调试这个,但没有取得任何进展。只是不明白为什么列车运行时数据会更新
x_train_data = train_data[:1]
应该创建列表的副本,而不是对它的引用。谢谢你的帮助。你知道吗
使用
x_train_data = train_data[:1]
在numpy中创建一个view,正如@hpaulj所说。你知道吗例如:
同样,在普通python中,它会创建一个shallow copy。你知道吗
相关问题 更多 >
编程相关推荐