【问题标题】:3D matrix addition python3D矩阵加法python
【发布时间】:2021-05-24 02:44:40
【问题描述】:

我正在尝试添加 3D 矩阵,但第三个循环不是从 0 开始。 这里矩阵的形状是(2,3,3)。

代码:

for i in range(0,r):
    for j in range(0,c):
        for l in range(0,k):
            sum[i][j][k]=A1[i][j][k]+A2[i][j][k]

输出:

IndexError: index 3 is out of bounds for axis 0 with size 3

【问题讨论】:

    标签: python-3.x indexoutofboundsexception matrix-multiplication


    【解决方案1】:

    对于两个矩阵的元素相加,您可以简单地在两个 numpy 数组之间使用 + 运算符:

    #create two matrices of random integers
    matrix1 = np.random.randint(10, size=(2,3,3))
    matrix2 = np.random.randint(10, size=(2,3,3))
    
    #add the two matrices element-wise
    sum_matrix = matrix1 + matrix2
    
    print(matrix1, matrix2, sum_matrix, sep='\n__________\n')
    

    【讨论】:

      【解决方案2】:

      我没有收到 IndexError。也许你发布你的整个代码?

      这是我的代码:

      arr1 = [[[2, 4, 8], [7, 7, 1], [4, 9, 0]], [[5, 0, 0], [3, 8, 6], [0, 5, 8]]]
      arr2 = [[[3, 8, 0], [1, 5, 2], [0, 3, 9]], [[9, 7, 7], [1, 2, 5], [1, 1, 3]]]
      
      sumArr = [[[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0],[0, 0, 0]]]
      
      for i in range(2): #can also use range(0,2)
          for j in range(3): 
              for k in range(3): 
                  sumArr[i][j][k]=arr1[i][j][k]+arr2[i][j][k]
                  
      print(sumArr)
      

      顺便问一下,有必要使用for循环吗? 如果没有,您可以使用 numpy 库。

      将 numpy 导入为 np

      将您的手动数组转换为 numpy 矩阵数组,然后进行加法。

      arr1 = [[[2, 4, 8], [7, 7, 1], [4, 9, 0]], [[5, 0, 0], [3, 8, 6], [0, 5, 8]]]
      arr2 = [[[3, 8, 0], [1, 5, 2], [0, 3, 9]], [[9, 7, 7], [1, 2, 5], [1, 1, 3]]]
      
      m1 = np.array(arr1)
      m2 = np.array(arr2)
      
      print("M1: \n", m1)
      print("M2: \n", m2)
      print("Sum: \n", m1 + m2)
      

      【讨论】:

        【解决方案3】:

        您在第三个循环中使用“l”进行迭代,但要在列表中访问,您使用了 k。结果,您的代码试图访问不存在的第 k 个索引,并且您遇到了错误。

        使用这个:

            for i in range(0, r):
                for j in range(0, c): 
                    for l in range(0, k): 
                        sum[i][j][l] = A1[i][j][l] + A2[i][j][l]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-07-17
          • 2016-05-11
          • 1970-01-01
          • 2022-06-30
          • 2020-04-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多