Python 如何创建8*8的numpy矩阵

Python 如何创建8*8的numpy矩阵,python,matrix,numpy-ndarray,Python,Matrix,Numpy Ndarray,我想做一个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],

我想做一个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]]])
但是,我只需要一个看起来像第一个矩阵的矩阵。

试试类似的东西


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

  • np.index()结果的第一个元素
  • 重复/平铺
    np.arange()的结果
  • 创建一个8x8的零数组,并添加一个包含数字0-7的列向量。剩下的就让广播来处理吧
  • 将包含数字0-7的8x1列向量与八个1的行向量相乘。也使用广播
  • 所有这些都给出了相同的结果(除了
    dtype
    ——前两个返回
    int
    数组,其余返回
    float
    数组,但更改类型非常简单):


    找出哪一个是最有效的,留给读者作为练习。

    numpy.zeros(shape=(8,8))
    如果您想要一个8x8矩阵,其中填充0,那么您希望该矩阵的内容是什么?结果应该与第一个数组类似。
    import numpy as np
    
    zeors_array = np.zeros( (8, 8) )
    print(zeors_array)
    
    np.indices((8,8))[0]
    
    np.tile(np.arange(8), (8, 1)).T
    
    np.zeros((8, 8)) + np.arange(8)[:, None]
    # or 
    (np.zeros((8, 8)) + np.arange(8)).T
    
    np.arange(8)[:, None] * np.ones((1, 8))
    # or 
    (np.ones((8, 1)) * np.arange(8)).T
    
    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.]])