如何创建一个 8*8 的 numpy 矩阵
how to create a numpy matrix of 8*8
我正在尝试制作一个 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]]])
但是,我只想要一个看起来像第一个的矩阵。
试试 this?
import numpy as np
zeors_array = np.zeros( (8, 8) )
print(zeors_array)
有很多方法可以做到这一点:
- 取
np.indices()
结果的第一个元素
np.indices((8,8))[0]
- 重复/平铺
np.arange()
的结果
np.tile(np.arange(8), (8, 1)).T
- 创建一个 8x8 的零数组并添加一个包含数字 0-7 的列向量。让广播来处理剩下的事情
np.zeros((8, 8)) + np.arange(8)[:, None]
# or
(np.zeros((8, 8)) + np.arange(8)).T
- 将包含数字 0-7 的 8x1 列向量与包含 8 个 1 的行向量相乘。还使用广播
np.arange(8)[:, None] * np.ones((1, 8))
# or
(np.ones((8, 1)) * np.arange(8)).T
所有这些都给出相同的结果(除了 dtype
-- 前两个 return int
数组,其余 return 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.]])
找出哪个最有效留作 reader 的练习。
我正在尝试制作一个 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]]])
但是,我只想要一个看起来像第一个的矩阵。
试试 this?
import numpy as np
zeors_array = np.zeros( (8, 8) )
print(zeors_array)
有很多方法可以做到这一点:
- 取
np.indices()
结果的第一个元素
np.indices((8,8))[0]
- 重复/平铺
np.arange()
的结果
np.tile(np.arange(8), (8, 1)).T
- 创建一个 8x8 的零数组并添加一个包含数字 0-7 的列向量。让广播来处理剩下的事情
np.zeros((8, 8)) + np.arange(8)[:, None]
# or
(np.zeros((8, 8)) + np.arange(8)).T
- 将包含数字 0-7 的 8x1 列向量与包含 8 个 1 的行向量相乘。还使用广播
np.arange(8)[:, None] * np.ones((1, 8))
# or
(np.ones((8, 1)) * np.arange(8)).T
所有这些都给出相同的结果(除了 dtype
-- 前两个 return int
数组,其余 return 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.]])
找出哪个最有效留作 reader 的练习。