Это упражнение из DataQuest.
Полагаю, я пытаюсь перебрать массив, но он мне не позволит.Чем массив отличается от списка?
32561 - это размер выборки, а 16280.50 - это 50% мужской и 50% женский.
import numpy as np
import matplotlib.pyplot as plt
chi_squared_values = []
for i in range(1000):
random_n = np.random.random((32561,))
for array in random_n:
male_count = 0
female_count = 0
for n in array: # Error on this line
if n < 0.5:
male_count =+ 1
else:
female_count =+ 1
male_diff = (male_count - 16280.5) ** 2 / 16280.5
female_diff = (female_count - 16280.5) ** 2 / 16280.5
chi_squared_value = male_diff + female_diff
chi_squared_values.append(chi_squared_value)
plt.hist(chi_squared_values)
plt.show()
# Output: TypeError: 'numpy.float64' object is not iterable
Правильный ответ для справки:
chi_squared_values = []
from numpy.random import random
import matplotlib.pyplot as plt
for i in range(1000):
sequence = random((32561,))
sequence[sequence < .5] = 0
sequence[sequence >= .5] = 1
male_count = len(sequence[sequence == 0])
female_count = len(sequence[sequence == 1])
male_diff = (male_count - 16280.5) ** 2 / 16280.5
female_diff = (female_count - 16280.5) ** 2 / 16280.5
chi_squared = male_diff + female_diff
chi_squared_values.append(chi_squared)
plt.hist(chi_squared_values)