Как назначить значения столбцов в большом массиве numpy? - PullRequest
0 голосов
/ 04 октября 2018

Я новичок в программировании на Python, и у меня возникла проблема с назначением определенных значений первому столбцу очень большого numpy.array.

Это код, который я использую:

import numpy as np

a = np.zeros ((365343020, 9), dtype = np.float32)

for n in range (0, 36534302):
    a[n*10:(n+1)*10,0] = n

где вторая строка, где я создаю массив из 365343020 строк и 9 столбцов, заполненных нулями;в то время как последовательный «for» предназначен для замены первого столбца массива вектором, элементы которого представляют собой 36534302 последовательных целых числа, повторяющихся 10 раз каждый (например, [0,0,…, 0,1,1,…, 1,2,2,…, 36534301, 36534301,…, 36534301]).

Кажется, что код реагирует так, как нужно, до строки 168000000 или массива, затем он заменяет 10 повторений чисел последней цифрой, нечетной, наВторое повторение (четного) числа ранее.

Я искал объяснения относительно различий между видами и копиями.Однако, даже пытаясь вручную определить содержимое определенной ячейки массива (где оно ошибочно определено циклом), оно не меняется.

Не могли бы вы помочь мне в решении этой проблемы?Спасибо

1 Ответ

0 голосов
/ 04 октября 2018

Возможно, ваша программа использует слишком много памяти.Вот некоторая базовая математика для вашего кода.

Date type: float32
Bits used: 32 bits
Size of array: 3288087180 (365343020*9)
Total memory consumed: 105218789760 bits(13.15234872 GB)

1. Попробуйте использовать бит float8, если значение, сохраняемое в массиве, не велико.
2. Попробуйте уменьшить размер массива.
31 и 2

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