草庐IT

99乘法表

全部标签

python - python中不同形状数组的逐元素乘法

假设我有两个数组a和b,a.shape=(5,2,3)b.shape=(2,3)然后c=a*b将给我一个c形状的数组(5,2,3)和c[i,j,k]=a[i,j,k]*b[j,k]。现在的情况是,a.shape=(5,2,3)b.shape=(2,3,8)我希望c的形状为(5,2,3,8)且c[i,j,k,l]=a[i,j,k]*b[j,k,l].如何有效地做到这一点?我的a和b实际上很大。 最佳答案 这应该有效:a[...,numpy.newaxis]*b[numpy.newaxis,...]用法:In:a=numpy.rando

python - 最小二乘法拟合直线 python 代码

我有一个由X和Y坐标组成的散点图。我想使用Least-SquaresFittoaStraightLine来获得最佳拟合线。最小二乘拟合直线是指:如果(x_1,y_1),....(x_n,y_n)是被测数据对,那么最好的直线是y=A+Bx。这是我在python中的代码:#numberofpointsis50A=(sum(x**2)*sum(y)-sum(x)*sum(x*y))/(50*sum(x**2)-(sum(x))**2)B=(50*sum(x*y)-sum(x)*sum(y))/(50*sum(x**2)-(sum(x))**2)print(A,B)这看起来正确吗,我在打印A和

python - 乘法组合算法

问题:给定一个数字n,是否有一种有效的算法从集合{1...n}中获取2-组合的列表,并按组合乘积的值排序?我需要这个来确定满足特定条件的两个*数字的最大乘积。如果列表是未排序的,我必须首先确定所有满足条件的组合,然后遍历这些组合以找到具有最大产品的组合,这是低效的。例如,给定n=3,可能的组合是:Combination:Product:3,393,263,132,242,121,11按产品值(value)降序排列,这是:Combination:Product:3,392,362,241,331,221,11额外背景:我刚刚解决了欧拉计划问题,该问题涉及寻找两个3位数乘积的最大回文数。我

python - 应用于列表的乘法运算符(数据结构)

我正在阅读Howtothinklikeacomputerscientist这是“Python编程”的介绍性文本。我想阐明乘法运算符(*)在应用于列表时的行为。考虑函数ma​​ke_matrixdefmake_matrix(rows,columns):""">>>make_matrix(4,2)[[0,0],[0,0],[0,0],[0,0]]>>>m=make_matrix(4,2)>>>m[1][1]=7>>>m[[0,0],[0,7],[0,0],[0,0]]"""return[[0]*columns]*rows实际输出为[[0,7],[0,7],[0,7],[0,7]]ma​​k

python - 使用乘法 ( * ) 意外行为生成子列表

这个问题在这里已经有了答案:Listoflistschangesreflectedacrosssublistsunexpectedly(17个答案)NestedListIndices[duplicate](2个答案)关闭9年前。我确定这个问题已经在某个地方得到了回答,但我不确定如何描述它。假设我想创建一个包含3个空列表的列表,如下所示:lst=[[],[],[]]我认为我这样做很聪明:lst=[[]]*3但我发现,在调试了一些奇怪的行为之后,这导致了对一个子列表的追加更新,比如lst[0].append(3),以更新整个列表,使其[[3],[3],[3]]而不是[[3],[],[]]。

python - CPU (numpy) 和 GPU (gnumpy) 上的矩阵乘法给出不同的结果

我正在使用gnumpy通过在GPU上进行训练来加速神经网络训练中的某些计算。我得到了想要的加速,但我有点担心numpy(cpu)与gnumpy(gpu)结果的差异。我有以下测试脚本来说明问题:importgnumpyasgpuimportnumpyasnpn=400a=np.random.uniform(low=0.,high=1.,size=(n,n)).astype(np.float32)b=np.random.uniform(low=0.,high=1.,size=(n,n)).astype(np.float32)ga=gpu.garray(a)gb=gpu.garray(b)g

python - 如何将 numpy 数组提升为幂? (对应于重复的矩阵乘法,不是逐元素的)

我想提出一个二维numpyarray,我们称它为A,它是某个数字n的幂,但是我迄今为止未能找到执行此操作的功能或运算符(operator)。我知道我可以将它转换为matrix类型并使用这样的事实(类似于Matlab中的行为),A**n做的正是我想要的,(对于array相同的表达式意味着逐元素求幂)。转换到matrix并返回似乎是一个相当丑陋的解决方法。当然必须有一个好的方法来执行该计算,同时保持格式为array? 最佳答案 我相信你想要numpy.linalg.matrix_power举个简单的例子:importnumpyasnpx

python - 为什么在列表上使用乘法运算符会创建指针列表?

这个问题在这里已经有了答案:Pythonlistproblem[duplicate](2个答案)关闭8年前。>>>rows=[['']*5]*5>>>rows[['','','','',''],['','','','',''],['','','','',''],['','','','',''],['','','','','']]>>>rows[0][0]='x'自然地,我希望行变成:[['x','','','',''],['','','','',''],['','','','',''],['','','','',''],['','','','','']]相反,我得到:[['x','',

python - 优化乘法模一个小质数

我需要执行以下操作多次:取两个整数a,b计算a*bmodp,其中p=1000000007和a,b与的数量级相同p我的直觉是天真的result=a*bresult%=p效率低下。我可以优化乘法模p吗?就像用pow(a,b,p)优化求幂模p一样? 最佳答案 您提到“a,b与p的数量级相同。”通常在密码学中这意味着a,b是p附近的大数,但严格小于p。如果是这种情况,那么您可以使用简单标识把你的计算变成result=((a-p)*(b-p))%p然后,您将一个大乘法转换为两个大减法和一个小乘法。您必须进行概要分析以查看哪个更快。

python - NumPy 性能 : uint8 vs. float 和乘法与除法?

我刚刚注意到,仅将乘法改为除法,我的脚本的执行时间几乎减半。为了调查这个,我写了一个小例子:importnumpyasnpimporttimeit#uint8arrayarr1=np.random.randint(0,high=256,size=(100,100),dtype=np.uint8)#float32arrayarr2=np.random.rand(100,100).astype(np.float32)arr2*=255.0defarrmult(a):"""mult,read-writeiterator"""b=a.copy()foriteminnp.nditer(b,op_