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

创建

NDArray和NumPy的多维数组非常类似。然而,NDArray提供GPU计算和自动求梯度等更多功能,这些使NDArray更加适合深度学习

  • 先导入这个模块:
from mxnet import nd

 创建行向量:

x=nd.arange(5)
x
输出:[0. 1. 2. 3. 4.](长度6,一维数组)
<NDArray 5 @cpu(0)>

形状(横,竖),尺寸(一共多少个元素)

x.shape '形状(5,)'
x.size '尺寸 5'

改形状:

x.reshape((2,2))
[[0. 1.]
 [2. 3.]]
<NDArray 2x2 @cpu(0)>
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 2x3x4 @cpu(0)>

指定NDArray中每个元素的值:

nd.array([[1,2],[3,4],[5,6]])

[[1. 2.]
 [3. 4.]
 [5. 6.]]
<NDArray 3x2 @cpu(0)>

随机生成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

广播机制

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值