是否可以向 numpy.ndarray 添加一个维度,使其形状变为 (n,m,1)?

问题描述 投票:0回答:3

例如:

xlist = [(1, 2, 3, 4), (5, 6, 7, 8)]
xarr = np.array(xlist)

xarr
的形状是(2,4)。

是否可以将其重塑为 (2,4,1),以便我可以使用

xarr[i][j][0]
来获取元素?

python numpy reshape numpy-ndarray
3个回答
2
投票

用途:

out = xarr[..., None]

或者:

out = xarr.reshape(2, 4, 1)

输出:

array([[[1],
        [2],
        [3],
        [4]],

       [[5],
        [6],
        [7],
        [8]]])

2
投票

有几种方法:

xnew = np.rehshape(xnew, (2, 4, 1)) # slow but can handle non numpy
xnew = xarr.reshape((2, 4, 1))      # can create a VIEW
xarr[:,:,np.newaxis]  # (2, 4, 1)   # create a VIEW
xarr.shape = (2, 4, 1)              # fast, changes original array

一些性能测试,对于中小型数组,所有操作都是不变的。


1
投票

在这种情况下您可以使用

np.atleast_3d
。作为奖励,它还将处理一维数组(尽管 n 长度的一维数组最终会得到形状
(1,n,1)
- 无论如何,这可能是您在这种情况下想要的)

np.atleast_3d(xarr).shape
Out[]: (2, 4, 1)
© www.soinside.com 2019 - 2024. All rights reserved.