Я пытаюсь создать два класса случайных двумерных точек, один из которых имеет значение [1,1], а другой - среднее значение [-1, -1]. Я написал функцию, но получаю ошибку, которая не может понять. Я искал ее, но ничего не нашел. Вот моя функция:Объект «float» является недоступным
def gen_arti_Bis(nbex=10,centerx=1,centery=1,sigma=0.1,epsilon=0.02):
xpos=np.random.multivariate_normal([centerx,centery],np.diag([sigma,sigma]),nbex/2)
xneg=np.random.multivariate_normal([-centerx,-centery],np.diag([sigma,sigma]),nbex/2)
data=np.vstack((xpos,xneg))
y=np.hstack((np.ones(nbex/2),-np.ones(nbex/2)))
return data,y
и вот сообщение об ошибке при вводе gen_arti():
Traceback (most recent call last):
File "<ipython-input-64-a173cf922dac>", line 1, in <module>
gen_arti_Bis()
File "<ipython-input-63-da8720093c11>", line 2, in gen_arti_Bis
xpos=np.random.multivariate_normal([centerx,centery],np.diag([sigma,sigma]),nbex/2)
File "mtrand.pyx", line 4308, in mtrand.RandomState.multivariate_normal (numpy/random/mtrand/mtrand.c:23108)
TypeError: 'float' object is unsliceable
О, спасибо большое, это сработало. Но откуда вы узнали, что это проблема? На самом деле, я не понял смысла сообщения об ошибке (unsliceable?!). Не могли бы вы объяснить это, пожалуйста? – dada
Я просто искал места, где вы могли бы проходить поплавок, где его не ожидали. Я подозреваю, что в коде numpy есть что-то, что проверяет тип параметра 'size' с' isinstance (size, int) ', и затем возвращается к коду для обработки кортежа. Кортеж можно нарезать (например, 'tup [start: stop]'), и я думаю, что код пытается его использовать для любого нецелого аргумента, что приводит к исключению из-за нарезки float. – Blckknght