numpy 中 (n,)数组与(n,1)数组的互转

在 numpy 中,向量 [ 1 2 3 ] \begin{bmatrix} 1\\2\\3\end{bmatrix} 123 [ 1 2 3 ] \begin{bmatrix} 1&2&3\end{bmatrix} [123] 的 shape 是相同的,都是 (3,),如果想要得到 (3,1) 或者 (1,3) 的 shape,需要使用 reshape 方法。如果 想得到 (3,1) ,调用 a.reshape(-1, 1) 或者 np.reshape(a, (-1,1)),如果想得到 (1,3),调用 a.reshape(-1,3) 或者 np.reshape(a, (-1,3))。如下表格所示:

(3,1)(1,3)
ndarraya.reshape(-1,1)a.reshape(-1,3)
numpynp.reshape(a,(-1,1))np.reshape(a,(-1,3))

-1 的意思是,确定列数后,行数由 总数 / 列数 确定,如果 a 有 n 个元素,列为 3,则行数 = n / 3。

reshape 进行维度的转换

a = np.array([1,2,3])
print(a.shape)
(3,)

b = a.reshape(-1,1)
print(b.shape)
(3, 1)

squeeze 方法则相反,将一个 shape 为 (n, 1) 或者 (1,n,1,...,1) 的 ndarray,转化为shape 为 (n,) 的 ndarray

把shape中为1的维度去掉

a = np.array([[1],[2],[3]])
print(a.shape)
(3, 1)

b = np.squeeze(a)
print(b.shape)
(3,)
  • 21
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值