Поскольку проблема, похоже, связана с весами, загруженными из файла, давайте рассмотрим, как choice
ведет себя с массивами весов:
In [227]: elements=['1b', '2b', '3b', 'hr', 'bb', 'k', 'out']
по умолчанию - отлично:
In [228]: np.random.choice(elements)
Out[228]: 'k'
1d массив с суммой 1 тоже подойдет:
In [229]: np.random.choice(elements, p=np.ones(7)/7)
Out[229]: '2b'
Но 2d массив даже правильного размера (столбцы или строки) выдает эту ошибку:
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
Lookingдо ValueError
Я видел, что обычно это происходит при использовании корреляции, свертки и различных задач подбора кривой.Это заставило меня заподозрить скомпилированную функцию, такую как np.choice
, и проблему измерения.Я все еще не совсем уверен, что является источником, но файл .pyx
в трассировке стека заставляет меня подозревать cython
код.
Что вам нужно сделать, это показать нам один или несколько весов проблемыкак загружено из excel
источника.Сосредоточьтесь на shape
и dtype
.Это может помочь показать пример файла csv
и один или несколько методов, которые вы использовали для его загрузки.
Поиск в Интернете показывает, что эта ошибка появляется с np.convolve
и np.bincount
какЧто ж.Это тоже функции, которые принимают в качестве входных данных 1d-массивы.