【发布时间】:2020-04-22 02:51:08
【问题描述】:
我有一个ints、a 的列表,介于 0 和 3000 之间。len(a) = 3000。我有一个 for 循环遍历这个列表,在更大的数组中搜索每个元素的索引。
import numpy as np
a = [i for i in range(3000)]
array = np.random.randint(0, 3000, size(12, 1000, 1000))
newlist = []
for i in range(0, len(a)):
coord = np.where(array == list[i])
newlist.append(coord)
如您所见,coord 将是 3 个坐标 x、y、z 的数组,用于 3D 矩阵中的值等于列表中的值。
有没有办法在没有for 循环的情况下以矢量化方式执行此操作?
输出应该是一个元组列表,a 中的每个元素对应一个:
# each coord looks like this:
print(coord)
(array[1, ..., 1000], array[2, ..., 1000], array[2, ..., 12])
# combined over all the iterations:
print(newlist)
[coord1, coord2, ..., coord3000]
【问题讨论】:
-
请提供minimal reproducible example,并提供示例输入和所需输出
-
已编辑以更清楚地说明问题
-
数组中还有其他值吗?
-
我的意思是除了
3Darray中的0-2999? -
除了范围(0,3000)的整数之外没有其他值
标签: python numpy loops vectorization