如果我知道每个方形子矩阵m(2x2)的维数,并且大方矩阵M的维数可以被维数m整除:M modulo m == 0.
是否有一种有效的方法来总结以下矩阵M:
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="data">
<link ref="{xyz:get-booklink(.)}">
<xsl:value-of select="xyz:get-book-name(.)"/>
</link>
</xsl:template>
<xsl:function name="xyz:get-book-name">
<xsl:param name="node"/>
<xsl:sequence select="$node/(/)/doc/books/name"/>
</xsl:function>
<xsl:function name="xyz:get-booklink">
<xsl:param name="node"/>
<xsl:sequence select="$node/(/)/doc/link/booklink"/>
</xsl:function>
结果如下:
<doc>
<link ref="abc.com def.com">abc def</link>
<books>
<booklink>abc</name>
<name>def</name>
</books>
<link>
<booklink>abc.com</booklink>
<booklink>def.com</booklink>
</link>
</doc>
M&#39;中的(0,0) M是(0,0),(0,1),(1,0),(1,1)的总和?
我发现for循环在这里非常慢。
答案 0 :(得分:0)
这是一个可能的解决方案。
import numpy as np
import itertools
>>> x = np.arange(16).reshape((4,4))
>>> x
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
>>> for i, j in itertools.product([0,2],[0,2]):
... print np.sum(x[i:i+2,j:j+2])
...
10
18
42
50
>>>
找到了一个优雅的解决方案here。
>>> x.reshape(2,2,2,2).sum(axis=(1,3))
array([[10, 18],
[42, 50]])
>>>