from mxnet import nd
x = nd.arange()
● 示例:
x.shape
● 示例:
x.size
● 示例:
X = x.reshape()
● 示例:
使⽤reshape函数把⾏向量x的形状改为(3, 4),也就是⼀个3⾏4列的矩阵,并记作X。除了形状改变之外,X中的元素保持不变。
nd.zeros()
● 示例:
我们创建⼀个各元素为0,形状为(2, 3, 4)的张量。实际上,之前创建的向量和矩阵都是特殊的张量。
nd.ones()
● 示例:
Y = nd.array()
● 示例:
nd.random.normal()
● 示例:
● 示例:
● 示例:
● 示例:
Y.exp()
● 示例:
nd.dot()
● 示例:
下⾯将X与Y的转置做矩阵乘法。由于X是3⾏4列的矩阵,Y转置为4⾏3列的矩阵,因此两个矩阵相乘得到3⾏3列的矩阵。
nd.concat()
● 示例:
下⾯分别在⾏上(维度0,即形状中的最左边元32 2. 预备知识素)和列上(维度1,即形状中左起第⼆个元素)连结两个矩阵。可以看到,输出的第⼀个NDArray在维度0的⻓度(6)为两个输⼊矩阵在维度0的⻓度之和(3 + 3),而输出的第⼆个NDArray在维度1的⻓度(8)为两个输⼊矩阵在维度1的⻓度之和(4 + 4)。
● 示例:
以 X == Y 为例,如果X和Y在相同位置的条件判断为真(值相等),那么新的NDArray在相同位置的值为1;反之为0。
X.sum()
● 示例:
X.asscalar()
● 示例:
例⼦中X的L2范数结果同上例⼀样是单元素NDArray,但最后结果变换成了Python中的标量。
● 拓展: 我们也可以把Y.exp()、X.sum()、X.norm()等分别改写为nd.exp(Y)、nd.sum(X)、nd.norm(X)等。
当对两个形状不同的NDArray按元素运算时,可能会触发⼴播(broadcasting)机制:先适当复制元素使这两个NDArray形状相同后再按元素运算。
由于A和B分别是3⾏1列和1⾏2列的矩阵,如果要计算A + B,那么A中第⼀列的3个元素被⼴播(复制)到了第⼆列,而B中第⼀⾏的2个元素被⼴播(复制)到了第⼆⾏和第三⾏。如此,就可以对2个3⾏2列的矩阵按元素相加。
● 在NDArray中,索引(index)代表了元素的位置。NDArray的索引从0开始逐⼀递增。例如,⼀个3⾏2列的矩阵的⾏索引分别为0、1和2,列索引分别为0和1。 ● 注意:左闭右开
● 示例:
我们指定了NDArray的⾏索引截取范围[1:3]。依据左闭右开指定范围的惯例,它截取了矩阵X中⾏索引为1和2的两⾏。
● 示例:
矩阵中⾏和列的索引,并为该元素重新赋值。
● 示例:
例⼦中,我们为⾏索引为1的每⼀列元素重新赋值。
如果两个实例的ID一致,那么它们所对应的内存地址相同,反之则不同。
● 示例:
● 示例:
如果X的值在之后的程序中不会复⽤,我们也可以⽤ X[:] = X + Y 或者 X += Y 来减少运算的内存开销。
● 示例:
我们可以通过array函数和asnumpy函数令数据在NDArray和NumPy格式之间相互变换。