【问题标题】:Fill several parts of NumPy array, given a list of indexes给定索引列表,填充 NumPy 数组的几个部分
【发布时间】:2017-12-08 05:26:23
【问题描述】:

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

从图片文件的名称中,我知道我希望将我的值存储在我的 ndarray 中的哪个位置。

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

我想做类似的事情

伪代码:

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 的最后两个维度)。

【问题讨论】:

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

标签: python numpy


【解决方案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 indexing 和 broadcasting。

【讨论】:

  • 谢谢!就我而言,我必须修改它,所以我有一个列表而不是列表列表,但除此之外它工作正常!
猜你喜欢
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 2021-02-07
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
相关资源
最近更新 更多