Метод FIFO с использованием NumPy - PullRequest
0 голосов
/ 11 ноября 2019

Я хотел бы реализовать метод FIFO, используя numpy. В частности, у меня есть простой массив STOCK, который выглядит следующим образом

import numpy

numpy.random.seed(1)
STOCK = numpy.random.randint(1, 9, size=(10_000, 10)) 

STOCK = array([
       [6, 4, 5, ..., 6, 8, 1],
       [1, 2, 5, ..., 2, 3, 5],
       [7, 6, 3, ..., 5, 6, 7],
       ...,
       [2, 5, 8, ..., 7, 6, 1],
       [2, 8, 7, ..., 2, 8, 4],
       [1, 2, 6, ..., 1, 1, 3]])

, где каждая строка представляет отдельную категорию продукта, а в каждом столбце - количество товаров, купленных на определенную дату.

Теперь у меня есть второй массив SOLD, который выглядит следующим образом

SOLD = numpy.random.randint(1, 9, size=10_000)
SOLD = array([1, 7, 3, ..., 6, 8, 5])

, где каждое число представляет количество продуктов, проданных в категории.

Теперь я хочу обновитьSTOCK массив с использованием метода FIFO . То есть, я хочу зарезервировать первые кумулятивные n элементов для каждой категории продуктов. В приведенном выше случае результат должен быть примерно таким:

UPDATED_STOCK= array([
       [5, 4, 5, ..., 6, 8, 1],  # 6-1, 4, 5,     ... BOOKED OUT=1
       [0, 0, 1, ..., 2, 3, 5],  # 1-1, 2-2, 5-4, ... BOOKED OUT=7
       [4, 6, 3, ..., 5, 6, 7],  # 7-3, 6, 3,     ... BOOKED OUT=3
       ...,
       [0, 1, 8, ..., 7, 6, 1],  # 2-2, 5-4, 8,   ... BOOKED OUT=6
       [0, 2, 7, ..., 2, 8, 4],  # 2-2, 8-6, 7,   ... BOOKED OUT=8
       [0, 0, 4, ..., 1, 1, 3]]) # 1-1, 2-2, 6-2, ... BOOKED OUT=5

Тем не менее, я не уверен, как решить эту проблему. Есть идеи?

...