NDArray和NumPy的多维数组非常类似。然而,NDArray
提供GPU计算和自动求梯度等更多功能,这些使NDArray
更加适合深度学习
from mxnet import nd
创建行向量:
x=nd.arange(5)
x
输出:[0. 1. 2. 3. 4.](长度6,一维数组)
形状(横,竖),尺寸(一共多少个元素)
x.shape '形状(5,)'
x.size '尺寸 5'
改形状:
x.reshape((2,2))
[[0. 1.] [2. 3.]]
x.reshape((-1,4))'固定了4列.这里的-1是能够通过元素个数和其他维度的大小推断出来的。'
建立各元素为0/1,形状为(2, 3, 4)的张量:
nd.zeros((2, 3, 4)) ‘nd.ones((2, 3, 4)) ’
[[[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]] [[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]]
指定NDArray
中每个元素的值:
nd.array([[1,2],[3,4],[5,6]])
[[1. 2.]
[3. 4.]
[5. 6.]]
随机生成NDArray中每个元素的值:
nd.random.normal(0,1,shape=(3,4)) '正态分布,参数 均值0,方差1,3x4的矩阵'
nd.random.uniform(0, 1, shape=(3, 4)) ‘均匀分布0-1’
按元素加减乘除指数运算:
X=[[ 0. 1. 2. 3.] [ 4. 5. 6. 7.] [ 8. 9. 10. 11.]]
Y=[[2. 1. 4. 3.] [1. 2. 3. 4.] [4. 3. 2. 1.]]
X+Y
X-Y
X*Y
X/Y
Y.exp()
dot函数做矩阵乘法:
nd.dot(X,Y.T) 'X是3行4列,Y4行3列,Y转置。结果是3行3列'
将多个NDArray
连结(concatenate).dim=0按行连,(列数不变),dim=1按列连,(行数不变)
nd.concat(X, Y, dim=0), nd.concat(X, Y, dim=1)
Out[51]:
[[ 0. 1. 2. 3.]
[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]
[ 2. 1. 4. 3.]
[ 1. 2. 3. 4.]
[ 4. 3. 2. 1.]]
[[ 0. 1. 2. 3. 2. 1. 4. 3.]
[ 4. 5. 6. 7. 1. 2. 3. 4.]
[ 8. 9. 10. 11. 4. 3. 2. 1.]]
使用条件判断式可以得到元素为0或1的新的NDArray
。
以X == Y
为例,如果X
和Y
在相同位置的条件判断为真(值相等),那么新的NDArray
在相同位置的值为1;反之为0。
X==Y
[[0. 1. 0. 1.] [0. 0. 0. 0.] [0. 0. 0. 0.]]
对所有元素求和——得到的只有一个元素
X.sum()
[66.]
通过asscalar
函数将结果变换为Python中的标量。
X.sum().asscalar()
66.0