Я хотел бы реализовать метод 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
Тем не менее, я не уверен, как решить эту проблему. Есть идеи?