Файловый объект является буфером . Когда вы читаете из буфера, потребляемая вами часть (позиция чтения сдвигается вперед). Когда вы читаете весь файл, позиция чтения находится в EOF, поэтому он ничего не возвращает, потому что читать нечего.
Если вам по какой-то причине необходимо сбросить позицию чтения на файловый объект, вы можете сделать:
f.seek(0)
Я заблудился в том, как написать функцию python, которая проходит по каждой строке и создает матрицу 3 на 3.
blockquote>Я понял, что вы уже имели дело со статистической частью проблемы (например, вычислением вероятностей из распределения Пуассона), я прав?
Если это так, вы можете использовать [114 ] itertools product для создания вашей таблицы.
Допустим, чтоprob_a
иprob_b
- это два массива, содержащие вероятности для команды A и команды B соответственно. Матрица построена следующим образом:from itertools import product import numpy as np prod_table = np.array([(i*j) for i, j in product(prob_b, prob_a)]) prod_table.shape = (4, 4)
Теперь у вас есть матрица 4x4 со всеми необходимыми значениями, которую вы можете преобразовать обратно в кадр данных pandas.
В этой таблице вероятности Team A - это индексы столбцов, вероятности Team B - индексы строк (что должно соответствовать вашему примеру). Таким образом, чтобы получить фрейм данных для панд, вы можете сделать:prob_df = pd.DataFrame(prod_table, index=prob_b, columns=prob_a)
И это таблица, которую вы ищете.
Я бы использовал numpy для простых операций линейной алгебры (например, умножение небольших матриц).
Если у вас уже есть фрейм данных в нужной форме, вы можете легко преобразовать его в numpy.ndarray.
[114 Если вы не хотите создавать ndarray из нулей, вставьте правильные элементы в нужных местах.