Не следует использовать numpy.ndarray()
для создания новых массивов NumPy.Это связано с тем, что NumPy будет распределять данные для массива, но не инициализировать значения, то есть они получат данные, которые оказались во вновь выделенной памяти (когда память освобождается, это нене сбрасывается, ссылки на него просто удаляются).
Вы можете увидеть это в действии, если посмотрите любой массив, созданный numpy.ndarray()
без каких-либо дальнейших изменений:
>>> numpy.ndarray((5,))
array([2.68156159e+154, 2.68156159e+154, nan, 0.00000000e+000, 2.68156159e+154])
IЯ не уверен, почему это не проблема для Windows тоже.Возможно, Windows инициализирует вновь выделенную память.Также может случиться так, что у вашей виртуальной машины Linux меньше памяти, и поэтому она с большей вероятностью будет повторно использовать память, чем хост Windows, который имеет больше памяти и, следовательно, с большей вероятностью предоставит вам «свежую» (ранее не использованную) память при выделении.,Я видел ошибку, которая предполагает инициализацию памяти, и она будет надежно отображаться только на компьютерах с малым объемом памяти.
В любом случае измените вашу инициализацию на:
counter = np.zeros((len(A),10), dtype=np.int64)
Иэто должно решить вашу проблему.
Из документов:
Массивы должны быть построены с использованием массива, нулей или пустых (см. раздел См. также ниже).Параметры, приведенные здесь, относятся к низкоуровневому методу (ndarray (…)) для создания экземпляра массива.
https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.html?highlight=ndarray#numpy.ndarray