【问题标题】:Python Array Creation Using 2 other arrays使用 2 个其他数组创建 Python 数组
【发布时间】: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作为数组,根据RVCV的行和列索引从中选择元素,你可以这样做:mag[np.ix_(RV,CV)]
  • 这可以更有效地完成,但是要修复您现有的代码:在您的 for 语句中,您忘记创建一个可迭代的迭代器,并且您使用 i 是不正确的。您可能的意思是:for i in range(CV.size):

标签: python arrays numpy for-loop iterator


【解决方案1】:

cmets 解决了使循环工作所需的语法更改。一种无需循环即可完成最终分配的方法是使用np.meshgrid

RR, CC = np.meshgrid(RV, CV, indexing='ij')
temp = mag[RR, CC]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    相关资源
    最近更新 更多