【问题标题】:How can I find the dimensions of a matrix in Python?如何在 Python 中找到矩阵的维度?
【发布时间】:2012-11-12 11:04:05
【问题描述】:

如何在 Python 中找到矩阵的维度。 Len(A) 只返回一个变量。

编辑:

close = dataobj.get_data(timestamps, symbols, closefield)

是(我假设)生成一个整数矩阵(不太可能是字符串)。我需要找到该矩阵的大小,这样我就可以运行一些测试而不必遍历所有元素。就数据类型而言,我假设它是一个数组数组(或列表列表)。

【问题讨论】:

  • 你的矩阵的数据类型是什么?
  • 请给我们一些代码,我们会尽力提供帮助。
  • Python 没有内置的“矩阵”类型。您是否在使用列表列表?
  • 如果您使用的是二维列表,则 Len(A) 返回矩阵的高度,然后 Len(A[0]) 将是矩阵的宽度。

标签: python matrix


【解决方案1】:

列表列表的行数将是:len(A) 和列数 len(A[0]) 假设所有行具有相同的列数,即每个索引中的所有列表具有相同的大小。

【讨论】:

  • 如果列表结构不统一,是否有任何解决方法?
  • 获取矩阵尺寸(使用 np.array 形成)的正确 Pythonic 方法是使用 .shape。让a 成为您的矩阵。要获取维度,您可以编写 a.shape,这将返回(# 列,# 行)。
【解决方案2】:

如果你使用 NumPy 数组,可以使用 shape。 例如

  >>> a = numpy.array([[[1,2,3],[1,2,3]],[[12,3,4],[2,1,3]]])
  >>> a
  array([[[ 1,  2,  3],
         [ 1,  2,  3]],

         [[12,  3,  4],
         [ 2,  1,  3]]])
 >>> a.shape
 (2, 2, 3)

【讨论】:

  • 被引用的数组不是python内置的,而是numpy模块中可用的数组
【解决方案3】:

正如艾曼·法哈特所说 您可以使用简单的方法 len(matrix) 来获取行的长度并获取第一行的长度来获取编号。使用 len(matrix[0]) 的列数:

>>> a=[[1,5,6,8],[1,2,5,9],[7,5,6,2]]
>>> len(a)
3
>>> len(a[0])
4

您还可以使用一个库来帮助您处理“numpy”矩阵:

>>> import numpy 
>>> numpy.shape(a)
(3,4)

【讨论】:

    【解决方案4】:

    正确答案如下:

    import numpy 
    numpy.shape(a)
    

    【讨论】:

      【解决方案5】:

      假设你有一个数组。要获取数组的尺寸,您应该使用 shape。

      import numpy as np a = np.array([[3,20,99],[-13,4.5,26],[0,-1,20],[5,78,-19]])
      a.shape

      这个的输出将是 (4,3)

      【讨论】:

        【解决方案6】:

        要在 NumPy 中获得正确数量的维度:

        len(a.shape)
        

        第一种情况:

        import numpy as np
        a = np.array([[[1,2,3],[1,2,3]],[[12,3,4],[2,1,3]]])
        print("shape = ",np.shape(a))
        print("dimensions = ",len(a.shape))
        

        输出将是:

        shape =  (2, 2, 3)
        dimensions =  3
        

        【讨论】:

        • len(a.shape) 总是返回 2
        • @pedrambashiri 不,这不是真的。我刚刚检查了这段代码。它返回 3。
        【解决方案7】:

        您可以使用以下方法来获取 Numpy 数组的高度和重量:

        int height = arr.shape[0]
        int weight = arr.shape[1]
        

        如果你的数组有多个维度,你可以增加索引来访问它们。

        【讨论】:

          【解决方案8】:
          m = [[1, 1, 1, 0],[0, 5, 0, 1],[2, 1, 3, 10]]
          
          print(len(m),len(m[0]))
          

          输出

          (3 4)

          【讨论】:

            【解决方案9】:

            您可以使用 Numpy 简单地找到矩阵维度:

            import numpy as np
            
            x = np.arange(24).reshape((6, 4))
            x.ndim
            

            输出将是:

            2
            

            表示这个矩阵是一个二维矩阵。

            x.shape
            

            会显示每个维度的大小。 x 的形状等于:

            (6, 4)
            

            【讨论】:

              【解决方案10】:

              我看待它的简单方式: 示例:

              h=np.array([[[[1,2,3],[3,4,5]],[[5,6,7],[7,8,9]],[[9,10,11],[12,13,14]]]])
              
              h.ndim 
              4
              
              h
              array([[[[ 1,  2,  3],
                       [ 3,  4,  5]],
              
                      [[ 5,  6,  7],
                       [ 7,  8,  9]],
              
                      [[ 9, 10, 11],
                       [12, 13, 14]]]])
              

              如果你仔细观察,开头的方括号的数量决定了数组的维度。 在上面访问 7 的数组中,使用了下面的索引, h[0,1,1,0]

              但是,如果我们将数组更改为如下所示的 3 维,

              h=np.array([[[1,2,3],[3,4,5]],[[5,6,7],[7,8,9]],[[9,10,11],[12,13,14]]])
              
              h.ndim
              3
              
              h
              
              array([[[ 1,  2,  3],
                      [ 3,  4,  5]],
              
                     [[ 5,  6,  7],
                      [ 7,  8,  9]],
              
                     [[ 9, 10, 11],
                      [12, 13, 14]]])
              

              要访问上述数组中的元素 7,索引是 h[1,1,0]

              【讨论】:

                猜你喜欢
                • 2013-06-18
                • 2016-08-13
                • 2019-05-21
                • 2015-04-25
                • 2018-01-18
                • 2021-11-24
                • 1970-01-01
                • 2021-12-20
                • 1970-01-01
                相关资源
                最近更新 更多