Python NumPy - перебирать массив? - PullRequest
0 голосов
/ 01 марта 2019

Это упражнение из 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)

1 Ответ

0 голосов
/ 01 марта 2019

Уменьшите количество, чтобы вы могли видеть, что происходит:

for i in range(1):
    random_n = np.random.random((5,))
    for array in random_n:
        print("array", array)

Вывод:

array 0.134163286857
array 0.872361053661
array 0.794873889688
array 0.68134812363
array 0.726452821311

random_n - это просто массив чисел с плавающей точкой.Таким образом, то, что вы назвали array, представляет собой одиночное число с плавающей точкой.Вы не можете повторить это.

Чего пытаетесь достичь, изменив структуру решения?Что должен делать ваш внутренний цикл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...