python for循环索引

python for循环索引,python,for-loop,Python,For Loop,下面有两个函数和两个for循环。在第一个例子中,我需要两个输入a[i]*b[i]的索引[i],而在第二个例子中,我需要它与输出以及矩阵[i]相邻 为什么,这些索引引用[i]背后的逻辑是什么 如果我不使用[I]对矩阵进行索引,我会得到这个 def w_sum(a,b): output = 0 assert(len(a) == len(b)) for i in range(len(a)): output += (a[i] * b[i])

下面有两个函数和两个for循环。在第一个例子中,我需要两个输入a[i]*b[i]的索引[i],而在第二个例子中,我需要它与输出以及矩阵[i]相邻

为什么,这些索引引用[i]背后的逻辑是什么

如果我不使用[I]对矩阵进行索引,我会得到这个

def w_sum(a,b):
      output = 0 
      assert(len(a) == len(b))
    
      for i in range(len(a)):
        output += (a[i] * b[i])
    
      return output


def vec_mat_mul(vector, matrix):
  output = [0, 0, 0]
  assert(len(vector) == len(matrix))

  for i in range(len(vector)):
    output[i] = w_sum(vector, matrix[i])
  
  return output
以下是输入变量和相依函数w_和:

#dataset at the beginning of a game
toes = [8.5, 9.5, 9.9, 9.0]
wlrec = [0.65, 0.8, 0.8, 0.9]
nfans = [1.2, 1.3, 0.5, 1.0]

#inserting one input datapoint of each variable
input = [toes[0], wlrec[0], nfans[0]]

#defining weights
weights = [[0.1, 0.2, -0.1],
           [-0.1, 0.1, 0.9],
           [0.1, .04, 0.1]]
这可能是一个很平常的问题,但我需要掌握逻辑才能继续前进

谢谢

TLDR;从矩阵中删除[i]意味着将列表序列与浮点列表相乘,这将给出错误消息

我想你是在叫vec_mat_mulinput,weights。将浮点的一维向量列表乘以列表的二维矩阵列表

现在对于行输出[i]=w_sumvector,矩阵[i]:如果从矩阵中删除索引[i],则意味着将矩阵作为列表传递

对于def w_suma内的行输出+=a[i]*b[i],b:它将在第一个列表的浮点值和未定义的第二个列表的浮点值之间执行元素相乘,因此您将得到错误:TypeError:不能将序列与“float”类型的非int相乘。这里的序列是矩阵,它是列表序列


对于正确的行为,如果你在输出[i]=w_sumvector中传递矩阵[i],矩阵[i]意味着你只传递矩阵中的一个元素,它是一个浮点列表,因此你在做一个浮点列表与我们期望的另一个浮点列表的元素相乘。

TLDR;从矩阵中删除[i]意味着将列表序列与浮点列表相乘,这将给出错误消息

我想你是在叫vec_mat_mulinput,weights。将浮点的一维向量列表乘以列表的二维矩阵列表

现在对于行输出[i]=w_sumvector,矩阵[i]:如果从矩阵中删除索引[i],则意味着将矩阵作为列表传递

对于def w_suma内的行输出+=a[i]*b[i],b:它将在第一个列表的浮点值和未定义的第二个列表的浮点值之间执行元素相乘,因此您将得到错误:TypeError:不能将序列与“float”类型的非int相乘。这里的序列是矩阵,它是列表序列


对于正确的行为,如果在输出[i]=w_sumvector中传递矩阵[i],矩阵[i]意味着只传递矩阵的一个元素,它是一个浮点列表,因此,您正在将一个浮点列表与另一个浮点列表进行元素相乘,这就是我们所期望的。

您在哪里调用vec_mat_mul?如果要将矩阵相乘,我建议你使用numpy数组而不是Python列表你是在问列表的索引功能吗?@OneCricketeer我想先在没有numpy的情况下创建它来理解逻辑。我在这里调用vec_mat_mul:def nn_mul_in_output,weights:pred=vec_mat_mulinput,weights return pred neural_output=nn_mul_in_output,weights printneural_output@interjay不,我是问为什么我需要在这里引用vec_mat_mul函数for循环中的[I]:矩阵[I]你在哪里调用vec_mat_mul?如果你想乘法矩阵,我建议你使用numpy数组而不是Python列表。你是在问列表的索引功能吗?@OneCricketeer我想先创建一个没有numpy的列表来理解逻辑。我在这里调用vec_mat_mul:def nn_mul_in_output,weights:pred=vec_mat_mulinput,weights return pred neural_output=nn_mul_in_output,weights printneural_output@interjay不,我是问为什么我需要在这里引用vec_mat_mul函数for循环中的[I]:矩阵[I]这意味着您只传递矩阵中的一个元素,它是一个浮点列表,因此您将浮点列表与所期望的浮点列表进行元素相乘。非常感谢你,这件事在我的脑海里清晰得很!不客气!这意味着您只传递矩阵中的一个元素,它是一个浮点列表,因此您将浮点列表与所期望的浮点列表进行元素相乘。非常感谢你,这件事在我的脑海里清晰得很!不客气!