矩阵有 np.arange 函数吗?

B.g*_*gho 5 numpy python-3.x

我正在尝试找到一种方法来创建一个 numpy 数组,就像 np.arange(start,stop,step) 一样,但会让我对数组进行整形,选定的 2D 形状(例如数组的行)将是“start”中的元素' 到 '停止' 并且列将重复该行的元素。因为这样做并不是最佳选择;

import numpy as np
x=np.array([0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5]).reshape(6,3)
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 7

由于广播,如果您将行(图​​中的红色)添加到零的列(图中的蓝色),您也将得到您想要的:

np.arange(0, 6) + np.zeros((3,1))
Run Code Online (Sandbox Code Playgroud)

结果

 ([[0., 1., 2., 3., 4., 5.],
   [0., 1., 2., 3., 4., 5.],
   [0., 1., 2., 3., 4., 5.]])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

希望您可以看到广播正在通过重复您开始的任何操作来填充数组内的破折号,以填充行MN列以成为 2 个MxN数组,然后将它们添加在一起。


如果您希望渐变从上到下而不是从左到右运行,则需要在添加一行零之前将增量行重新调整为列:

np.arange(6).reshape(-1,1) + np.zeros((1,8))
Run Code Online (Sandbox Code Playgroud)

结果

[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.]
Run Code Online (Sandbox Code Playgroud)

如果你想教孩子们时间表:-)

np.arange(1,13).reshape(-1,1) * np.arange(1,13)
Run Code Online (Sandbox Code Playgroud)

结果

[  1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12],
[  2,   4,   6,   8,  10,  12,  14,  16,  18,  20,  22,  24],
[  3,   6,   9,  12,  15,  18,  21,  24,  27,  30,  33,  36],
[  4,   8,  12,  16,  20,  24,  28,  32,  36,  40,  44,  48],
[  5,  10,  15,  20,  25,  30,  35,  40,  45,  50,  55,  60],
[  6,  12,  18,  24,  30,  36,  42,  48,  54,  60,  66,  72],
[  7,  14,  21,  28,  35,  42,  49,  56,  63,  70,  77,  84],
[  8,  16,  24,  32,  40,  48,  56,  64,  72,  80,  88,  96],
[  9,  18,  27,  36,  45,  54,  63,  72,  81,  90,  99, 108],
[ 10,  20,  30,  40,  50,  60,  70,  80,  90, 100, 110, 120],
[ 11,  22,  33,  44,  55,  66,  77,  88,  99, 110, 121, 132],
[ 12,  24,  36,  48,  60,  72,  84,  96, 108, 120, 132, 144]]
Run Code Online (Sandbox Code Playgroud)