繁体   English   中英

如何创建一个 8*8 的 numpy 矩阵

[英]how to create a numpy matrix of 8*8

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

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

output:

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]]])

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

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

  1. np.indices()结果的第一个元素
np.indices((8,8))[0]
  1. 重复/平铺np.arange()的结果
np.tile(np.arange(8), (8, 1)).T
  1. 创建一个 8x8 零数组并添加一个包含数字 0-7 的列向量。 让广播照顾rest
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 arrays,rest 返回float arrays,但无论如何更改类型都很容易)

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.]])

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

尝试这样的事情

import numpy as np

zeors_array = np.zeros( (8, 8) )
print(zeors_array)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM