-1
我发现修改/分配numpy.ndarray就像: X [j,...,c] =东西。 不按我期望的方式工作。请参阅以下代码段和相关输出在Python(numpy)中修改ndarray的正确方法是什么?
X_train_norm = np.zeros_like(X_train)
for j in range(100, 102):
for c in range(X_train.shape[-1]):
X_train_norm[j,...,c] = X_train[j,...,c] - means[j, c]
print(j, c, np.mean(X_train_norm[j,...,c]), np.mean(X_train[j,...,c] - means[j,c]))
100 0 152.491210938 0.0
100 1 153.384765625 0.0
100 2 164.598632812 0.0
101 0 148.837890625 0.0
101 1 151.559570312 0.0
101 2 162.604492188 0.0
(means is a Nx3 array and X_train is a Nx32x32x3 array)
什么是创建输出的正确方法?
编辑:我得到了它的代码片段像这样的工作:
z = X_train[j,...] - means[j,]
if X_train_norm is None:
X_train_norm = np.array(z, ndmin=4)
else:
X_train_norm = np.vstack([X_train_norm, np.array(z, ndmin=4)])
我肯定有一个更高效,更Python的方式来做到这一点。感谢您的期待!
' “不工作我会expect'方式” 详细点吗? – Divakar
如果我计算'z = X_train [j,...,c] - 意味着[j,c]',z看起来与我做'X_train_norm [j,...,c] = .... '。输出说明了这一点。 –
更新了代码的代码片段 –