我有一个numpy数组arr
,其中每个numpy数组的长度都不同。我可以得到arr
的形状:
arr.shape
>>> (9,)
我可以得到arr
元素之一的形状:
arr[0].shape
>>> (6, 1, 2)
我知道所有这些元素的形状均为(n, 1, 2)
。
我想对arr
进行切片,以获得如下的一维结果:
arr[:,:,:,0]
但是出现以下错误:
IndexError: too many indices for array
编辑:我最初的问题是令人误解的。我想做这个切片,以便可以 assign 值到切片。因此,将切片放入新变量中对我的情况没有用。本质上,我想在一个简单的衬里中执行以下操作:
arr[:,:,:,0] = arr[:,:,:,0] - np.min(arr[:,:,:,0])
答案 0 :(得分:1)
您可以使用解决方案的列表理解版本。
desired_result = np.array([el[:,:,0] for el in arr])
答案 1 :(得分:1)
您可以固定第一个(实际上是所有不同的)维,然后对arr
的静态元素应用转换。
import numpy as np
from random import randint
arr=np.array([np.random.randint(3,15, size=(randint(3,9),randint(3,7),randint(6,19))) for el in range(9)])
print(arr.shape)
print(arr[0].shape)
for i in range(arr.shape[0]):
arr[i][:,:,0]-=arr[i][:,:,0].min()
print(arr[i][:,:,0])