如何在python中逐元素读取数组中的数组
我想计算两个向量之间的MSE,原始向量和预测向量。 X_列是一个包含所有原始输入的向量,重建的32是所有预测,但我只想计算第一个元素(X_列[0]及其重建的预测32[0])的MSE,我想使用以下某种函数手动进行计算:如何在python中逐元素读取数组中的数组,python,arrays,python-3.x,Python,Arrays,Python 3.x,我想计算两个向量之间的MSE,原始向量和预测向量。 X_列是一个包含所有原始输入的向量,重建的32是所有预测,但我只想计算第一个元素(X_列[0]及其重建的预测32[0])的MSE,我想使用以下某种函数手动进行计算: mse=[] for coef, coef32 in zip(X_train[0], reconstructed32[0]): mse.append((coef-coef32)**2) print("MSE is", np.mean(mse)) 但是c
mse=[]
for coef, coef32 in zip(X_train[0], reconstructed32[0]):
mse.append((coef-coef32)**2)
print("MSE is", np.mean(mse))
但是coef和coef32并没有访问向量的所有系数,而是获取完整向量,for只进行一次迭代。
这就是X_列[0]的外观:
array([[0.00000000e+00, 0.00000000e+00, 2.26577651e-02, 4.44901595e-03,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
1.19896736e-02, 2.88007129e-03, 0.00000000e+00, 0.00000000e+00,
1.89431056e-01, 0.00000000e+00, 3.64951454e-02, 0.00000000e+00,
3.19024414e-01, 7.74396257e-03, 6.00360870e-01, 0.00000000e+00,
6.25879224e-03, 6.58161461e-01, 8.55771124e-01, 0.00000000e+00,
9.72116515e-02, 1.20666134e-03, 1.45429194e-01, 0.00000000e+00,
8.25748563e-01, 6.86123502e-03, 5.37337780e-01, 0.00000000e+00,
0.00000000e+00, 5.24137542e-03, 0.00000000e+00, 3.74730385e-04,
0.00000000e+00, 1.18224040e-01, 8.56024176e-02, 0.00000000e+00,
2.49160156e-02, 0.00000000e+00, 8.91805351e-01, 2.61418521e-03,
0.00000000e+00, 1.73141190e-03, 0.00000000e+00, 4.95929737e-04,
0.00000000e+00, 1.00000000e+00, 4.93207388e-02, 5.37037617e-03,
3.81159922e-03, 2.94345170e-01, 4.77780886e-02, 0.00000000e+00,
5.86739518e-02, 1.02838585e-02, 1.41941339e-01, 3.23100435e-03,
0.00000000e+00, 1.34332031e-01, 2.35870923e-03, 0.00000000e+00,
5.09367557e-03, 0.00000000e+00, 1.07753032e-03, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 3.47328931e-01, 0.00000000e+00,
0.00000000e+00, 2.65773922e-01, 1.57823116e-02, 5.41949784e-03,
7.56190493e-05, 1.40293926e-01, 5.02460590e-03, 6.51085284e-03,
9.38402303e-03, 2.63461888e-01, 1.96186375e-04, 1.39610067e-01,
0.00000000e+00, 2.39743218e-02, 3.54982950e-02, 6.54916763e-02,
5.11557400e-01, 3.56561318e-03, 5.72423302e-02, 0.00000000e+00,
1.21502653e-01, 2.71597654e-02, 2.47318600e-03, 6.85532205e-03,
5.31266391e-01, 0.00000000e+00, 0.00000000e+00, 2.94529963e-02,
0.00000000e+00, 3.75285745e-01, 3.31357837e-01, 1.18085509e-03,
1.19613800e-02, 6.72158494e-05, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 7.86180317e-01, 0.00000000e+00, 0.00000000e+00,
4.27392730e-03, 2.27557942e-02, 1.35929761e-02, 1.27607910e-02,
0.00000000e+00, 2.63269083e-03, 1.48336608e-02, 0.00000000e+00,
1.77292936e-02, 1.18409727e-04, 0.00000000e+00, 5.49420249e-03,
0.00000000e+00, 1.70363311e-03, 1.75287843e-01, 4.07821295e-04]],
dtype=float32)
例如,如果我尝试以下简单代码:
for coef in X_train[0]:
print("coef is", coef)
我得到这个输出:
coef is [0.00000000e+00 0.00000000e+00 2.26577651e-02 4.44901595e-03
0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00
1.19896736e-02 2.88007129e-03 0.00000000e+00 0.00000000e+00
1.89431056e-01 0.00000000e+00 3.64951454e-02 0.00000000e+00
3.19024414e-01 7.74396257e-03 6.00360870e-01 0.00000000e+00
6.25879224e-03 6.58161461e-01 8.55771124e-01 0.00000000e+00
9.72116515e-02 1.20666134e-03 1.45429194e-01 0.00000000e+00
8.25748563e-01 6.86123502e-03 5.37337780e-01 0.00000000e+00
0.00000000e+00 5.24137542e-03 0.00000000e+00 3.74730385e-04
0.00000000e+00 1.18224040e-01 8.56024176e-02 0.00000000e+00
2.49160156e-02 0.00000000e+00 8.91805351e-01 2.61418521e-03
0.00000000e+00 1.73141190e-03 0.00000000e+00 4.95929737e-04
0.00000000e+00 1.00000000e+00 4.93207388e-02 5.37037617e-03
3.81159922e-03 2.94345170e-01 4.77780886e-02 0.00000000e+00
5.86739518e-02 1.02838585e-02 1.41941339e-01 3.23100435e-03
0.00000000e+00 1.34332031e-01 2.35870923e-03 0.00000000e+00
5.09367557e-03 0.00000000e+00 1.07753032e-03 0.00000000e+00
0.00000000e+00 0.00000000e+00 3.47328931e-01 0.00000000e+00
0.00000000e+00 2.65773922e-01 1.57823116e-02 5.41949784e-03
7.56190493e-05 1.40293926e-01 5.02460590e-03 6.51085284e-03
9.38402303e-03 2.63461888e-01 1.96186375e-04 1.39610067e-01
0.00000000e+00 2.39743218e-02 3.54982950e-02 6.54916763e-02
5.11557400e-01 3.56561318e-03 5.72423302e-02 0.00000000e+00
1.21502653e-01 2.71597654e-02 2.47318600e-03 6.85532205e-03
5.31266391e-01 0.00000000e+00 0.00000000e+00 2.94529963e-02
0.00000000e+00 3.75285745e-01 3.31357837e-01 1.18085509e-03
1.19613800e-02 6.72158494e-05 0.00000000e+00 0.00000000e+00
0.00000000e+00 7.86180317e-01 0.00000000e+00 0.00000000e+00
4.27392730e-03 2.27557942e-02 1.35929761e-02 1.27607910e-02
0.00000000e+00 2.63269083e-03 1.48336608e-02 0.00000000e+00
1.77292936e-02 1.18409727e-04 0.00000000e+00 5.49420249e-03
0.00000000e+00 1.70363311e-03 1.75287843e-01 4.07821295e-04]
我想在每个系数前面得到“coef is”,而不是在整个向量前面。我怎样才能解决这个问题
谢谢 试试这个
for coef in X_train[0][0]:
print("coef is", coef)
试试这个
for coef in X_train[0][0]:
print("coef is", coef)
当您遍历NumPy数组时,您正在遍历第一个索引(即行)。因为您有一个维度为
(1,d)
的矩阵,所以迭代将给出整个第一行
有几种方法可以解决这个问题,但最简单的方法就是使用行向量本身(维度(d,)
)
#在您的情况下,您的_idx是0
对于coef,zip中的coef32(X_train[your_idx][0],重构32[your_idx][0]):
... # 做你的事
当您遍历NumPy数组时,您正在遍历第一个索引(即行)。因为您有一个维度为(1,d)
的矩阵,所以迭代将给出整个第一行
有几种方法可以解决这个问题,但最简单的方法就是使用行向量本身(维度(d,)
)
#在您的情况下,您的_idx是0
对于coef,zip中的coef32(X_train[your_idx][0],重构32[your_idx][0]):
... # 做你的事
但是他的数组看起来像一个2D数组,所以X\u train[0]
应该可以工作吗X_-train[0]
仅获取数组的第一个元素并打印X_-train=np.random.rand(1,10);对于X_列[0]中的coef:print(“coef is”,coef)
适用于我,但他的数组看起来像一个2D数组,所以X_列[0]
应该可以工作X_-train[0]
仅获取数组的第一个元素并打印X_-train=np.random.rand(1,10);对于X_列车[0]中的coef:print(“coef is”,coef)
适用于meCan您可以添加代码以生成X_列车
?您可以添加代码以生成X_列车
?