【动手学深度学习10.15】数据操作NDArray的使用学习

创建

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为例,如果XY在相同位置的条件判断为真(值相等),那么新的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

广播机制

 

 

 

你可能感兴趣的