ValueError:x和y必须具有相同的第一维,但形状为(50,)和(1,50)/多重处理

问题描述 投票:0回答:1

我不熟悉多重处理和绘图,所以我希望编写一个可以对高度范围进行多重处理的代码,以便通过方程式获得每个高度的最佳发射角度,然后绘制结果。

我的主要问题是试图绘制结果时遇到错误。我的第二个问题是研究代码一段时间,现在我开始认为多进程是多余的吗?我仍然希望使用多进程。因此,对此的任何帮助也将受到赞赏。

当我不想绘制结果时,该方程似乎很好用。但是,当我尝试绘制它们时,出现“ ValueError:x和y必须具有相同的第一个尺寸,但形状为(50,)和(1,50)”,我无法完全理解。我以为它们都在50范围内?

我一直在弄乱它,试图使其正常工作。我相信它在“ list_h = np.array(range(1))”行,因为它看起来似乎不正确。但是,如果我增加该范围,似乎只会重复该结果。使我认为我的多进程结构不佳。

我的代码如下

import numpy as np
from multiprocessing import Pool
import matplotlib.pyplot as plt

def f(x):
    speed = 5
    ran0 = (speed*speed)/9.8
    array_hght = np.array(range(50))
    return ((np.arccos(array_hght/(array_hght+ran0)))/2)*(180/np.pi)

if __name__ == '__main__':
    with Pool(5) as p:
        list_h = np.array(range(1))
        list_angles = p.map(f, list_h)
        print(list_angles)
        array_h = np.array(range(50))
        plt.plot(array_h, list_angles)
        plt.show()

非常感谢您的帮助:)。>

我是多处理和绘图的新手,所以我希望编写一个可以对一系列高度进行多处理以通过方程式获得每个高度的最佳发射角度的代码,然后绘制...

python matplotlib multiprocessing valueerror
1个回答
0
投票

您快到了!! pool.map()方法通过将f应用于给定输入(在这种情况下为list_h),以列表形式返回结果。由于list_h只有一项,因此结果将是只有一个值的列表。

© www.soinside.com 2019 - 2024. All rights reserved.