繁体   English   中英

Python Numpy-遍历数组?

[英]Python numpy - iterating over an array?

这是DataQuest的一项练习。

我想我正在尝试遍历一个数组,但是它不允许我这样做。 数组与列表有何不同?

样本大小为32561,而男性50%和女性50%为16280.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)

减少数量,以便您可以查看发生了什么:

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命名为单个浮点数。 您不能对此进行迭代。

通过更改解决方案的结构要实现什么? 您的内循环应该做什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM