gpt4 book ai didi

python - 对象深入以获得所需的数组,numpy 随机选择

转载 作者:行者123 更新时间:2023-12-01 08:57:35 26 4
gpt4 key购买 nike

这是我用来从棒球比赛模拟器中生成随机加权选择的代码,我一直在将其作为我的第一个 Python 项目。

elements = ['1b', '2b', '3b', 'hr', 'bb', 'k', 'out']
if order_pos_away == 1:
weights = ab1
if order_pos_away == 2:
weights = ab2
if order_pos_away == 3:
weights = ab3
if order_pos_away == 4:
weights = ab4
if order_pos_away == 5:
weights = ab5
if order_pos_away == 6:
weights = ab6
if order_pos_away == 7:
weights = ab7
if order_pos_away == 8:
weights = ab8
if order_pos_away == 9:
weights = ab9
from numpy.random import choice
c = choice(elements, p=weights)

每次循环运行order_pos_away时都会增加1,因此下一个击球手的概率列表加起来正好为1。当手动输入列表概率时,我没有任何问题。但是,当我尝试从存储它们的 Excel 工作表中导入它们时,我收到错误:

ValueError: object too deep for desired array

我尝试了多种将 Excel 数据导入 python 的方法(read_csv、xlrd、numpy、pandas)。无论我尝试什么,我总是会遇到同样的错误。我已经搜索了很多次,但没有找到解决方案,甚至很难找到一个很好的解释来解释当我收到此错误时发生的情况。

最佳答案

由于问题似乎是从文件加载的权重引起的,让我们探讨一下 choice 对于权重数组的行为方式:

In [227]: elements=['1b', '2b', '3b', 'hr', 'bb', 'k', 'out']

默认 - 良好:

In [228]: np.random.choice(elements)
Out[228]: 'k'

总和为 1 的一维数组也可以:

In [229]: np.random.choice(elements, p=np.ones(7)/7)
Out[229]: '2b'

但是二维数组,即使大小正确(列或行)也会产生此错误:

In [230]: np.random.choice(elements, p=np.ones((1,7))/7)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-230-0be221b99732> in <module>()
----> 1 np.random.choice(elements, p=np.ones((1,7))/7)

mtrand.pyx in mtrand.RandomState.choice()

ValueError: object too deep for desired array

In [231]: np.random.choice(elements, p=np.ones((7,1))/7)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-231-88812915113a> in <module>()
----> 1 np.random.choice(elements, p=np.ones((7,1))/7)

mtrand.pyx in mtrand.RandomState.choice()

ValueError: object too deep for desired array

查找 ValueError 我发现它通常在使用相关、卷积和各种曲线拟合任务时出现。这让我怀疑编译函数 - 例如 np.choice - 和维度问题。我仍然不太确定源代码是什么,但是堆栈跟踪中的 .pyx 文件让我怀疑 cython 代码。

您需要做的是向我们展示从 excel 源加载的一个或多个问题权重。重点关注 shapedtype。显示示例 csv 文件以及用于加载该文件的一种或多种方法可能会有所帮助。

<小时/>

网络搜索显示 np.convolvenp.bincount 也会出现此错误。这些也是采用一维数组作为输入的函数。

关于python - 对象深入以获得所需的数组,numpy 随机选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52694220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com