草庐IT

python - 在 Python 中将来自两个不同字典的值相乘

我有两个单独的字典,其中包含我想相乘的键和值。这些值应该只乘以它们拥有的键。即dict1={'a':1,'b':2,'c':3}dict2={'a':15,'b':10,'d':17}dict3=dict.items()*dict.items()printdict3#####dict3shouldequal{'a':15,'b':20}如果有人能提供帮助,那就太好了。谢谢! 最佳答案 您可以使用dictcomprehension:>>>{k:v*dict2[k]fork,vindict1.items()ifkindict2}{'a'

python - 沿给定轴将 numpy ndarray 与一维数组相乘

看来我迷失在一些可能很愚蠢的事情中。我有一个n维numpy数组,我想将它与沿某个维度(可以改变!)的向量(一维数组)相乘。例如,假设我想沿第一个数组的轴0将一个二维数组乘以一个一维数组,我可以这样做:a=np.arange(20).reshape((5,4))b=np.ones(5)c=a*b[:,np.newaxis]很简单,但我想将这个想法扩展到n维(对于a,而b始终是1d)和任何轴。换句话说,我想知道如何在正确的位置生成带有np.newaxis的切片。假设a是3d,我想沿axis=1相乘,我想生成正确给出的切片:c=a*b[np.newaxis,:,np.newaxis]即给定a

python - 将两个指数不匹配的 Pandas 系列相乘

从df创建了两个系列:s1和s2。每个都有相同的长度但不同的索引。s1.multiply(s2)合并不匹配的索引,而不是与它们相乘。我只想将s1与s2相乘,忽略不匹配的索引。我可以运行s1.reset_index()和s2.reset_index()然后从这两个dfs中取出我想要的列,因为它将原始索引转换为一个单独的专栏,但这很乏味,我认为可能有更简单的方法来做到这一点。s1.multiply(s2,axis='columns')好像也没用 最佳答案 我认为使用reset_index()是正确的方法,但是有一个选项可以删除索引,而不

python - Pandas 使用跨多个列的字典值相乘

给定以下数据框:importpandasaspddf=pd.DataFrame({'a':[1,2,3,4,5],'b':[5,4,3,3,4],'c':[3,2,4,3,10],'d':[3,2,1,1,1]})以及以下参数列表:params={'a':2.5,'b':3.0,'c':1.3,'d':0.9}生成以下所需的输出:abcdoutput0153324.11242221.42334122.63433123.845410138.4我一直在用它来产生结果:df['output']=[np.sum(params[col]*df.loc[idx,col]forcolindf)for

Python、numpy、einsum 将一叠矩阵相乘

出于性能原因,我很好奇是否有一种方法可以将一堆矩阵相乘。我有一个4维数组(500、201、2、2)。它基本上是一个500个长度的(201,2,2)矩阵堆栈,对于500个矩阵中的每一个,我想使用einsum将相邻矩阵相乘并得到另一个(201,2,2)矩阵。最后我只对[2x2]矩阵进行矩阵乘法。由于我的解释已经偏离轨道,我将只展示我现在正在做的事情,以及“减少”等效项以及为什么它没有帮助(因为它在计算上的速度相同)。最好这将是一个NumPy的单行,但我不知道那是什么,或者即使它可能。代码:Arr=rand(500,201,2,2)defloopMult(Arr):ArrMult=Arr[0

python - Numpy:将矩阵与 3d 张量相乘——建议

我有一个形状为MxN的矩阵P和一个形状为KxNxR的3d张量T。我想将P与T中的每个NxR矩阵相乘,得到KxMxR3d张量。P.dot(T).transpose(1,0,2)给出了想要的结果。这个问题有没有更好的解决方案(即摆脱transpose)?这一定是一个很常见的操作,所以我认为,其他人已经找到了不同的方法,例如使用tensordot(我试过但没能得到想要的结果)。意见/观点将不胜感激! 最佳答案 scipy.tensordot(P,T,axes=[1,1]).swapaxes(0,1)

python - Pandas 将数据帧与多索引和重叠索引级别相乘

我正在努力完成一项本应很简单的任务,但它并没有像我想象的那样工作。我有两个带有多索引和列的数字数据框A和B:A=ABCDX1AX1BX1CX1DX12AX2BX2CX2DX23AX3BX3CX3DX3Y1AY1BY1CY1DY12AY2BY2CY2DY23AY3BY3CY3DY3B=ABCDX1aAX1aBX1aCX1aDX1abAX1bBX1bCX1bDX1bcAX1cBX1cCX1cDX1c2aAX2aBX2aCX2aDX2abAX2bBX2bCX2bDX2bcAX2cBX2cCX2cDX2c3aAX3aBX3aCX3aDX3abAX3bBX3bCX3bDX3bcAX3cBX3cC

python - Pandas 将数据帧与多索引和重叠索引级别相乘

我正在努力完成一项本应很简单的任务,但它并没有像我想象的那样工作。我有两个带有多索引和列的数字数据框A和B:A=ABCDX1AX1BX1CX1DX12AX2BX2CX2DX23AX3BX3CX3DX3Y1AY1BY1CY1DY12AY2BY2CY2DY23AY3BY3CY3DY3B=ABCDX1aAX1aBX1aCX1aDX1abAX1bBX1bCX1bDX1bcAX1cBX1cCX1cDX1c2aAX2aBX2aCX2aDX2abAX2bBX2bCX2bDX2bcAX2cBX2cCX2cDX2c3aAX3aBX3aCX3aDX3abAX3bBX3bCX3bDX3bcAX3cBX3cC

python - 将 np.int8 数组与 127 相乘会根据平台产生不同的 numpy 数组类型

以下代码:>>>importnumpyasnp>>>np.arange(2).astype(np.int8)*127为numpy1.13.3生成#OnWindowsarray([0,127],dtype=int16)#OnLinuxarray([0,127],dtype=int8)但是,如果我将127更改为126,两者都会返回一个np.int8数组。如果我将127更改为128,两者都会返回一个np.int16数组。问题:这是预期的行为吗?为什么这一个案例的两个平台不同? 最佳答案 这是由于NumPyissue5917.instead

python - 将 np.int8 数组与 127 相乘会根据平台产生不同的 numpy 数组类型

以下代码:>>>importnumpyasnp>>>np.arange(2).astype(np.int8)*127为numpy1.13.3生成#OnWindowsarray([0,127],dtype=int16)#OnLinuxarray([0,127],dtype=int8)但是,如果我将127更改为126,两者都会返回一个np.int8数组。如果我将127更改为128,两者都会返回一个np.int16数组。问题:这是预期的行为吗?为什么这一个案例的两个平台不同? 最佳答案 这是由于NumPyissue5917.instead