回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想用numpy实现FIFO方法。具体来说,我有一个numpy数组<code>STOCK</code>,如下所示</p>
<pre class="lang-py prettyprint-override"><code>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]])
</code></pre>
<p>,其中每行表示不同的产品类别,每列表示在特定日期购买的商品数量。你知道吗</p>
<p>现在,我有第二个数组<code>SOLD</code>,看起来像这样</p>
<pre class="lang-py prettyprint-override"><code>SOLD = numpy.random.randint(1, 9, size=10_000)
SOLD = array([1, 7, 3, ..., 6, 8, 5])
</code></pre>
<p>其中每个数字代表每个类别销售的产品数量。你知道吗</p>
<p><strong>现在我想用<a href="https://en.wikipedia.org/wiki/FIFO_and_LIFO_accounting" rel="nofollow noreferrer">FIFO</a>方法更新<code>STOCK</code>数组。</strong>意思是,我想预订每个产品类别的前n个累计元素。在上面的例子中,输出应该是</p>
<pre class="lang-py prettyprint-override"><code>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
</code></pre>
<p>然而,我不确定如何解决这个问题。有什么想法吗?你知道吗</p>