【问题标题】:how to create a numpy matrix of 8*8如何创建一个 8*8 的 numpy 矩阵
【发布时间】:2021-06-02 20:12:49
【问题描述】:

我正在尝试制作一个 8*8 的矩阵,所以我使用了这个:

s=np.indices((8,8))

输出:

array([[[0, 0, 0, 0, 0, 0, 0, 0],
        [1, 1, 1, 1, 1, 1, 1, 1],
        [2, 2, 2, 2, 2, 2, 2, 2],
        [3, 3, 3, 3, 3, 3, 3, 3],
        [4, 4, 4, 4, 4, 4, 4, 4],
        [5, 5, 5, 5, 5, 5, 5, 5],
        [6, 6, 6, 6, 6, 6, 6, 6],
        [7, 7, 7, 7, 7, 7, 7, 7]],

       [[0, 1, 2, 3, 4, 5, 6, 7],
        [0, 1, 2, 3, 4, 5, 6, 7],
        [0, 1, 2, 3, 4, 5, 6, 7],
        [0, 1, 2, 3, 4, 5, 6, 7],
        [0, 1, 2, 3, 4, 5, 6, 7],
        [0, 1, 2, 3, 4, 5, 6, 7],
        [0, 1, 2, 3, 4, 5, 6, 7],
        [0, 1, 2, 3, 4, 5, 6, 7]]])

但是,我只想要一个看起来像第一个矩阵的单个矩阵。

【问题讨论】:

  • numpy.zeros(shape=(8,8)) 如果你想要一个用 0 填充的 8x8 矩阵
  • 你希望这个矩阵的内容是什么?
  • 结果应该和第一个数组一样。

标签: python matrix numpy-ndarray


【解决方案1】:

有很多方法可以做到这一点:

  1. 获取np.indices() 结果的第一个元素
np.indices((8,8))[0]
  1. 重复/平铺np.arange()的结果
np.tile(np.arange(8), (8, 1)).T
  1. 创建一个 8x8 零数组并添加一个包含数字 0-7 的列向量。让广播处理剩下的事情
np.zeros((8, 8)) + np.arange(8)[:, None]
# or 
(np.zeros((8, 8)) + np.arange(8)).T
  1. 将包含数字 0-7 的 8x1 列向量与包含 8 个 1 的行向量相乘。也使用广播
np.arange(8)[:, None] * np.ones((1, 8))
# or 
(np.ones((8, 1)) * np.arange(8)).T

所有这些都给出相同的结果(dtype 除外——前两个返回 int 数组,其余返回 float 数组,但无论如何更改类型都很容易):

array([[0., 0., 0., 0., 0., 0., 0., 0.],
       [1., 1., 1., 1., 1., 1., 1., 1.],
       [2., 2., 2., 2., 2., 2., 2., 2.],
       [3., 3., 3., 3., 3., 3., 3., 3.],
       [4., 4., 4., 4., 4., 4., 4., 4.],
       [5., 5., 5., 5., 5., 5., 5., 5.],
       [6., 6., 6., 6., 6., 6., 6., 6.],
       [7., 7., 7., 7., 7., 7., 7., 7.]])

找出最有效的方法留给读者作为练习。

【讨论】:

    【解决方案2】:

    试试this

    import numpy as np
    
    zeors_array = np.zeros( (8, 8) )
    print(zeors_array)
    

    【讨论】:

      猜你喜欢
      • 2015-07-23
      • 2014-02-09
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 2010-10-08
      • 2017-06-18
      相关资源
      最近更新 更多