Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 生成np.einsum评估图_Python_Numpy_Scipy_Numpy Einsum - Fatal编程技术网

Python 生成np.einsum评估图

Python 生成np.einsum评估图,python,numpy,scipy,numpy-einsum,Python,Numpy,Scipy,Numpy Einsum,我正计划教同事们np.einsum,希望展示如何将其简化为乘法和求和。 所以,我想用字母字符代替数字数据。在数组中 比如说,我们有A(2X2)作为[['A',b'],['c',d']]和b(2X1)作为[['e'],['f']] 我们可以使用einsum创建一个矩阵C,比如:np.einsum('ab,bc->ac',a,B) 我想看到的是:它返回计算图:类似于:a*c+…,等等 当然,np.einsum需要数字数据,如果给定要运行的上述代码,则会给出一个错误。tensordot有一个示例,利用

我正计划教同事们
np.einsum
,希望展示如何将其简化为乘法和求和。 所以,我想用字母字符代替数字数据。在数组中

比如说,我们有A(2X2)作为[['A',b'],['c',d']]和b(2X1)作为[['e'],['f']] 我们可以使用einsum创建一个矩阵C,比如:
np.einsum('ab,bc->ac',a,B)

我想看到的是:它返回计算图:类似于:a*c+…,等等


当然,
np.einsum
需要数字数据,如果给定要运行的上述代码,则会给出一个错误。

tensordot
有一个示例,利用了
'a'*3=>'aaa'
这一事实,使用字符串作为其数组之一。但是
einsum
不能处理字符串(这是一个编译代码问题)

前一段时间,我写了一篇纯python作品,它解析'ij,jk->'字符串,并设置适当的乘积和计算。这包括额外的调试输出。这可能是您任务的起点

最新的
einsum
进行了一些优化,并提供了一些调试帮助<代码>np。einsum_路径提供了有关该路径的更多信息


首先,为什么需要B是2-dim?为什么不干脆
np.einsum('ab,b->a',a,b)

现在实际问题是: 这并不完全是你想要的,但是通过使用A和B的智能选择,你可以使其可见。e、 g.
A=[[1,10],[1001000]
B=[1,2]
,这使得
np.einsum('ab,B->A',A,B)=[212100]
发生的事情非常明显

更通用的版本稍微复杂一点(但希望不是必需的)。其想法是使用不同的素数(特别有用的是2和5,因为它们与dezimal系统中的易识别数对齐)。如果你要求一个以上的二元数,你可以考虑用素数(2,3,5,7等),然后将结果转换成另一个数字系统。 如果超过两个DIM->30进制 3维(2,3,5,7)->210维系统