擅长:python、mysql、java
<p>只需按列数缩放行索引并为行主顺序添加列索引。对于列主顺序,请使用行数来缩放行索引并再次添加列索引。在</p>
<p>因此,要获得<code>rowmaj</code>版本的扁平化索引-</p>
<pre><code>i*n+j
</code></pre>
<p>要获取<code>colmaj</code>版本的展平索引-</p>
^{pr2}$
<p>其中:</p>
<pre><code>i = row index
j = col index
m = number of rows in the matrix
n = number of columns in the matrix
</code></pre>
<p>放入函数格式-</p>
<pre><code>def linearize(i, j, m, n, order='C'):
if order=='C': # rowmaj
return i*n+j
elif order=='F': # colmaj
return i*m+j
else:
raise Exception("Invalid order value")
</code></pre>
<p>样本运行-</p>
<pre><code>In [42]: linearize(i=1, j=1, m=2, n=3, order='C')
Out[42]: 4 # element : 5 in rowmaj array, d
In [43]: linearize(i=1, j=1, m=2, n=3, order='F')
Out[43]: 3 # element : 4 in colmaj array, c
</code></pre>