小编Eri*_*ric的帖子

Python中的特殊张量收缩

我需要执行一种特殊类型的张量收缩.我想要这样的东西:

A_ {bg} = Sum_ {a,a',a''}(B_ {a} C_ {a'b} D_ {a''g})

其中所有指数可以有超过一个,一个值0,1和总和 '和 '' 进行对所有情况,其中A + A '+ A''= 1或A + A '+ A'" = 2.所以它就像爱因斯坦求和公约的反面:我只想在三个指数中的一个与其他指数不同时求和.

此外,我要一些挠性与不被求和索引的数目:在本例中得到的张量具有2个索引,并且总和是在3张量,一个带一个索引元件的产品的另外两个与两个索引.这些索引的数量会有所不同,所以一般来说我希望能写出这样的东西:

A _ {...} = Sum_ {a,a',a''}(B_ {a ...} C_ {a ...} D_ {a''...}})

我想指出索引的数量不是固定的,但是它是受控制的:我可以知道并指定每个张量中每个张量有多少个索引.

我试过np.einsum(),但显然我被迫在标准的爱因斯坦惯例中总结重复的指数,我不知道如何实现我在这里暴露的条件.

而且我不能用各种各样的东西写出来,因为正如我所说,所涉及的张量的索引数量并不固定.

有人有想法吗?


来自评论:

我会像这样编写我在这里编写的语言:

tensa = np.zeros((2,2))
for be in range(2):
    for ga in range(2):
        for al in range(2):
            for alp in range(2):
                for alpp in range(res(al,alp),prod(al,alp)):
                    tensa[be,ga] += tensb[al] * tensc[alp,be] * tensd[alpp,ga] …
Run Code Online (Sandbox Code Playgroud)

python numpy linear-algebra

2
推荐指数
1
解决办法
1240
查看次数

os.difftime(t2, t1) 的用途是什么,但 t2 - t1 未涵盖?

在这段代码中

t1 = os.time()
do_something_slow()
t2 = os.time()

elapsed_diff = os.difftime(t2, t1)
elapsed_sub  = t2 - t1
Run Code Online (Sandbox Code Playgroud)

什么情况下会elapsed_diff有所不同elapsed_sub

lua datetime

2
推荐指数
1
解决办法
214
查看次数

Python:创建一个空文件对象

我试图为Python创建一个无法正常工作的日志记录模块,因为它无法创建文件对象.

debug.py:

import os
import datetime
import globals

global fil
fil = None

def init(fname):
     fil = open(fname, 'w+')
     fil.write("# PyIDE Log for" + str(datetime.datetime.now()))

def log(strn):
    currentTime = datetime.datetime.now()

    fil.write(str(currentTime) + ' ' + str(os.getpid()) + ' ' + strn)
    print str(currentTime) + ' ' + str(os.getpid()) + ' ' + strn

def halt():
    fil.close()
Run Code Online (Sandbox Code Playgroud)

fil不会None像我得到的那样工作AttributeError.我也试过创建一个虚拟对象:

fil = open("dummy.tmp","w+")
Run Code Online (Sandbox Code Playgroud)

但是dummy.tmp文件被写入,即使init()之前log()被调用了.显然,您无法在已打开的文件上打开新文件.我试图关闭fil之前init(),但Python说它无法write()在关闭的文件上执行.

这是正在访问的代码 debug.py

if …
Run Code Online (Sandbox Code Playgroud)

python file-io python-2.7

2
推荐指数
1
解决办法
1万
查看次数

在另请参阅文档部分中解决与内置函数的名称冲突

我有以下类,一个隐藏(或阴影)内置函数的方法.我希望文档包含一个"另请参见"部分,该部分链接到隐藏的内置函数.

classdef CatHelper
  %CATHELPER Makes implementing vertcat/horzcat easy on a custom class
  %
  %   See Also: cat

  methods (Abstract)
    obj = cat(obj, ndim, varargin);
  end
end
Run Code Online (Sandbox Code Playgroud)

不幸的是,"see also"链接只是尝试在未记录的抽象方法上提供帮助CatHelper/cat.

如何指定我希望链接转到内置 cat函数?

documentation matlab class token-name-resolution shadowing

2
推荐指数
1
解决办法
45
查看次数

如何在PHP中找到关联数组中第一个元素的值?

我有这样一个数组:

$array = array(
    'fruit1' => 'apple',
    'fruit2' => 'orange',
    'fruit3' => 'grape',
);
Run Code Online (Sandbox Code Playgroud)

是否有一个函数可以'apple'从该数组中获取(第一个键)?或者我别无选择,只能这样做?

function firstkey($array)
{
    for($array as $first)
    {
        return $first;
    }
}
Run Code Online (Sandbox Code Playgroud)

php arrays associative-array

1
推荐指数
1
解决办法
144
查看次数

重复附加数字的单词

我是python的新手,想以列表格式制作这样的东西,所以我可以使用csv writer.

["Structure1", "Structure2", ... "Structure50"]
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用"Structure "*50结构重复50次,但是如何将它放入列表中并附加一个数字?

谢谢!

python string

1
推荐指数
2
解决办法
76
查看次数

宏观替代

我写了以下代码:

#define GATE(name, num)do{\
  name##list[num] = #name;\
}while(0)

char* name[] = {"hello", "world", "byebye"};

int i;
for(i = 0; i < 3; i++)
{
    GATE(name[i],0);
}
Run Code Online (Sandbox Code Playgroud)

显然,我无法得到我想要的GATE(name[0],0)被替换的东西hellolist[0] = "hello",但是name[0]list[0] = "hello",这会导致gcc错误.

我想知道如何使用宏制作我想要的东西?

c linux macros

1
推荐指数
1
解决办法
929
查看次数

将字典值从list转换为float

我有一个名为"location"的字典,如下所示:

{
    'WA': [
        '47.3917',
        '-121.5708'
    ],
    'VA': [
        '37.7680',
        '-78.2057'
    ],
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想转换为值为float的dic,所以它看起来像:

{
    'WA': [
        47.3917,
        -121.5708
    ],
    'VA': [
        37.7680,
        -78.2057
    ],
    ...
}
Run Code Online (Sandbox Code Playgroud)

我试过了

for key in location.keys():
    location[key] = float(location[key][0,1])
print location
Run Code Online (Sandbox Code Playgroud)

它给了我一个恐怖,"float()参数必须是一个字符串或数字"

我该如何解决这个问题?

python

1
推荐指数
1
解决办法
1881
查看次数

关于"case"语法生成的锁存器

我理解在systemverilog中使用case语法时,我们需要完全描述所有组合或添加默认值以避免锁存.

这是我的示例代码,没有生成锁存器:

 module test(
input logic[2:0] op,
output logic a,b,c
);

    always_comb
    begin

    case(op)

     0: {a,b,c} = {1'b1,1'b1,1'b0};
     1: {a,b,c} = {1'b1,1'b0,1'b0};
     2: {a,b,c} = {1'b0,1'b1,1'b0};
     default: {a,b,c} = {1'b0,1'b0,1'b0};
     endcase
     end
     endmodule
Run Code Online (Sandbox Code Playgroud)

正如我在开头所说,如果添加默认值,则不会生成锁存器.请查看第二个代码,这是一个ALU设计:

module ALU(
output logic[31:0] Result,
output logic Zero, Overflow, Negative, Carryout,

input logic [5:0]ALUOp_i,
input logic [31:0] ALU_A_i, ALU_B_i,
input logic [4:0] Shamt
);

logic [31:0] adder_b;

always_comb
begin


  casez(ALUOp_i)

 /*Add_trap*/   0,1: {Carryout,Result} = {ALU_A_i[31],ALU_A_i} + {ALU_B_i[31],ALU_B_i};
 /*Add_notrap*/ 
 /*Subtrap*/    2,3: 
 /*Sub_notrap*/    begin
             adder_b = ALU_B_i ^ …
Run Code Online (Sandbox Code Playgroud)

verilog mips system-verilog

1
推荐指数
1
解决办法
689
查看次数

使用坐标列表切割numpy数组

考虑M形状的numpy ndarray (比如说)(a,b,c)和坐标列表[(b0,c0),(b1,c1),...,(bn,cn)].

我想要以下矢量集合:[M[:,b0,c0],M[:,b1,c1],...,M[:,bn,cn]].如何通过列表理解实现这一目标?

编辑:我需要一个适用于任意数量维度的解决方案,即在案例(例如)中返回类似上面列表的列表M.shape = (a,b,c,d) and coordinates = [(b0,c0,d0),...,(bn,cn,dn)],以及更高维度的案例.

python numpy multidimensional-array

1
推荐指数
2
解决办法
1642
查看次数