如何只到(…,3)到(…,1)?

2024-06-16 16:03:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个形状为(147, 120, 120, 3)的小天体。我想获得(147, 120, 120, 1)形状数组的副本。最后一个维度中的最后两个索引应该被丢弃

我应该使用什么功能


Tags: 功能副本数组天体形状
3条回答

根据您是否希望保持第四维:

In [1]: import numpy as np

In [2]: a = np.random.rand(147, 120, 120, 3)

In [3]: b = a[:, :, :, 0].copy(); b.shape
Out[3]: (147, 120, 120)

# axis=-1 expands the last dimension
In [4]: b = np.expand_dims(a[:, :, :, 0], axis=-1); b.shape
Out[4]: (147, 120, 120, 1)

编制索引时保持维度的一种简单方法是将索引放置在列表中:

>>> a = np.random.rand(147, 120, 120, 3)
>>> a[:, :, :, [0]].shape
(147, 120, 120, 1)
>>> a[..., [0]].shape
(147, 120, 120, 1)

其中[0]是一个包含单个元素的列表,0。如果需要数组的副本而不是视图,请使用.copy()

是否要切掉最后一个维度中的最后两个索引? 我想这就是你想要的

a = np.random.rand(147, 120, 120, 3)
b = a[...,:1]
b.shape

输出

(147, 120, 120, 1)

省略号...可用于泛化空片:

相关问题 更多 >