Я новичок в Python 3.0 и изо всех сил пытаюсь найти решение следующей проблемы. Это шаг к симуляционному упражнению на доске Гальтона.
- У меня есть массив numpy, длина которого автоматически генерируется на основе другой переменной
- Затем я генерирую набор чисел, добавляю их в список и суммирую.
- Наконец, я хотел бы добавить счетчик +1 к индексу массива, который равен числу в сумме на шаге 2.
import numpy as np
import random as rnd
zufall = rnd.randint(0,1)
zufall_list = []
hoehe = int(input("Höhe? "))
behaelter = np.zeros(hoehe+1, int)
for i in range(hoehe):
zufall_list.append(rnd.randint(0,1))
for j in str(sum(zufall_list)):
behaelter[j] += 1
print(zufall_list)
Я получаю сообщение об ошибке IndexError: only integers, slices (
:), ellipsis (
...), numpy.newaxis (None) and integer or boolean arrays are valid indices
и не понимаю, почему это так.
2 ответа
for j in str(sum(zufall_list)):
behaelter[j] += 1
В этой строке вы используете строку str(sum(...)), как индекс. Хотя строка повторяема, ее нельзя использовать в качестве индекса.
В вашем случае я бы сделал behaelter[int(j)], чтобы изменить 'j' на целое число, чтобы вы могли использовать его в качестве индекса.
Вместо того
for j in str(sum(zufall_list)):
behaelter[j] += 1
Использовать
for j in str(sum(zufall_list)):
behaelter[int(j)] += 1
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.
behaelter
со строкой. Не любой из действительных, которые вы перечислили выше.zufall_list
вstr
, вероятно, чтобы вы могли перебирать отдельные цифры результирующего числа. Однако это все еще ул. Попробуйтеbehaelter[int(j)] += 1