在给定索引列表

时间:2017-12-07 17:01:38

标签: python numpy

我想用数据填充numpy.ndarray(32x32像素整数图片==数组)

从图片文件的名称我知道我的ndarray中我想要存储我的值。

我想给我的ndarray一个列表,但也有一些切片(0),因为图片存储在最后两个维度中。我该怎么做?

我想做点什么

Pesudocode:

data=numpy.ndarray(dim1,dim2,dim3,32,32)
list=function(filename)

data[list,slice(0),slice(0)]=read_image(filename)

这可能吗?

我的列表中有条目指定ndarray [int,int,int]的位置,而我读取的图像是32位32整数数组(填充我的ndarray的最后两个维度)。

1 个答案:

答案 0 :(得分:1)

要执行此分配,请在前三个维度中的每个维度中传递合适的数组,并在最后两个维度中传递:(表示整个索引范围)。 例如,如果您的列表是

list = [[1, 2, 3], [4, 2, 0], [5, 3, 4], [2, 2, 2]]

然后作为第一个索引传递的数组是[1,4,5,2],并且类似地用于另外两个:[2,2,3,2]和[3,0,4,2]。假(随机)图像的完整示例:

data = np.zeros((6, 7, 8, 32, 32))
list = [[1, 2, 3], [4, 2, 0], [5, 3, 4], [2, 2, 2]]
image = np.random.uniform(size=(32, 32))
ix = np.array(list)
data[ix[:, 0], ix[:, 1], ix[:, 2], :, :] = image

此处ix[:, 0]为[1,4,5,2],ix[:, 1][2, 2, 3, 2],依此类推。

参考:NumPy indexingbroadcasting