【发布时间】:2016-11-05 07:24:08
【问题描述】:
我有两个数组,我想在创建第三个数组时一起使用它们的值。下面我给出了数组的大小和形状,以防它们有任何帮助。
CV Shape = (126,)
RV Shape = (94,)
CV Size =126
RV Size =94
我希望将它们的值放入的数组定义如下,我尝试实现以下代码:
temp=np.empty((np.size(RV),np.size(CV)))
for i in CV[int(i)]:
for j in RV[j]:
temp[i,j]=(RV[i],CV[j])
这给了我一个具有以下形状的临时数组: (94, 126)
但是循环不起作用,我收到以下错误,有人知道如何解决它吗?
Traceback (most recent call last):
File
"C:/Users/Lenovo/PycharmProjects/TestImageRead/Normal/Camera/TurnerSystem/Project.py", line 47, in <module>
for i in CV[int(i)]:
TypeError: 'numpy.int32' object is not iterable
为了提供更多上下文和信息,我正在检测视频源中的密集光流。 RV 和 CV 是水平和垂直位置,我将从其中对流值进行采样,而不是使用为每个像素存储的所有值。这些点将有效地在图像上形成一个样本点网格。 从 OpenCV 教程中,我能够获得一个幅度数组,该数组存储整个帧(640x480)中每个像素的流量幅度。所以我想做的是用存储在 RV 和 CV 中的点的幅度值填充临时数组。
RV 和 CV 存储值如下: [5 10 15 20 25 30 35 40 45 50 55 ....]
所以我想做的是循环遍历所有 RV 和 CV 的值,并将图像每个点的大小存储到临时数组中以供将来使用。
temp=mag(RV,CV)
【问题讨论】:
-
您到底想用
for i in CV[int(i)]和j in RV[j]实现什么目标?此外,很高兴看到一个最小的示例案例和预期的输出。 -
IIUC,使用
mag作为数组,根据RV和CV的行和列索引从中选择元素,你可以这样做:mag[np.ix_(RV,CV)]。 -
这可以更有效地完成,但是要修复您现有的代码:在您的
for语句中,您忘记创建一个可迭代的迭代器,并且您使用i是不正确的。您可能的意思是:for i in range(CV.size):
标签: python arrays numpy for-loop iterator