我希望在python (numpy)中执行以下操作。
Matrix A is M x N x R
Matrix B is N x 1 x R
矩阵乘以AB = C,其中C是M×1×R矩阵。本质上,A的每一个M x N层(其中R层)都是矩阵独立地乘以B中的每个N x 1向量。我确信这是一个一行。我一直在尝试使用tensordot(),但我似乎给了我意想不到的答案。
我已经用Igor Pro编程将近10年了,现在我正试着把它的页面转换成python。
我将2个矩阵A.dot(B)相乘,其中:
A=1 x n矩阵,dtype浮点
B=n x n矩阵,d型布尔型
我正在对大的n执行此计算,并且很快就会耗尽内存(在n=14000失败时)。A和B是密集的。
这似乎是因为numpy在执行矩阵乘法之前将B转换为浮点型数据类型,因此产生了巨大的内存成本。事实上,%timeit表明它将B转换为浮点数所花费的时间比执行乘法所花费的时间更多。
有什么办法可以解决这个问题吗?这里的重点是减少内存尖峰/浮点转换,同时仍然允许常见的矩阵功能(矩阵加法/乘法)。
以下是用于基准测试解决方案的可重现数据:
np.random.seed(999)
n = 30000
A
我正在使用Python和Numpy进行一些数据分析。
我有一个很大的3D矩阵(NxNxN),其中每个单元都是一个矩阵,这次是一个3x3矩阵。调用矩阵data,它看起来像这样:
data[N,N,N,3,3]
我需要找出所有3x3矩阵的特征值,为此我使用了Numpy的eigvals例程,但这需要很长时间。现在我差不多是这样做的:
for i in range(N):
for j in range(N):
for k in range(N):
a = np.linalg.eigvals(data[i,j,k,:,:])
对于N= 256,这大约需
我试图执行一个矩阵乘法,它有以下方案:
C = np.dot(np.dot(sparse.csr_matrix(np.double(A).transpose()),sparse.spdiags(B,0,Ngrid,Ngrid)), sparse.csr_matrix(np.double(A)))
因此,我想转置矩阵A,它导致M>>N的N矩阵,并与对角矩阵M矩阵相乘。B是“主要对角线”。得到的矩阵( N )应与矩阵A ( M )相乘,从而得到N矩阵C。
出现的错误如下:
<2000x921600 sparse matrix of type '<class '
我正在尝试创建具有此形状的numpy的分块矩阵 ? 其中每个条目是一个4x4矩阵。 例如,让我们用4x4的零矩阵填充所有的条目。 N = 9
sizeOfBlock = 4
A = np.zeros((N, N), dtype =object)
for i in np.arange(N):
for j in np.arange(N):
A[i,j] = np.zeros((sizeOfBlock,sizeOfBlock)) 这将创建具有正确形状的矩阵。现在我想把它从一个9x9的对象矩阵转换成一个36x36的矩阵来表示所有的条目。 有办法做到这一点吗? 诚挚的问候
我有一个数值分析任务,我需要通过乘以矩阵来找到一些系数。在Mathcad中给出了一个例子,但是现在我们必须用另一种编程语言来完成,所以我选择了Python。
问题是,我通过在各自的环境中乘以矩阵得到了不同的结果。下面是Python中的函数:
from numpy import *
def matrica(C, n):
N = len(C) - 1
m = N - n
A = [[0] * (N + 1) for i in range(N+1)]
A[0][0] = 1
for i in range(0, n + 1):
A[i][i] = 1
for j in range(1,
当我试图找到一种方法来优化一个巨大的2D矩阵的创建和打印时,我决定尝试NumPy。但是,对我来说不幸的是,使用这个库反而会使情况变得更糟。我的目标是创建一个矩阵,用它的索引填充字符串。如下所示(其中n是矩阵的大小):
python_matrix = [[f"{y}, {x}" for x in range(n)] for y in range(n)]
当我以这种方式使用array()库的NumPy函数时:
numpy_matrix = numpy.array([[f"{y}, {x}" for x in range(n)] for y in range(n)])
我试着像矩阵一样显示列表,但我不能换行。我如何将这个列表显示为没有numpy的矩阵。我使用了join,但它不起作用。
提供的数据(txt文件)如下:
ControlPoint经度纬度
A 30 0
B 60 0
C 60 -30
D 30 -30
import math
Coordi = []
with open('2432004k_coordi_new.txt') as D:
for item in D:
Coordi.append([i for i in item.split()])
Coordi = Coordi.j
一段时间以来,我一直对此不屑一顾,不知道自己在实现这些RNN时做错了什么(如果有的话)。为了避免你们进入前阶段,我可以告诉你们,这两个实现计算相同的输出,所以前一阶段是正确的。问题在倒退阶段。
这是我的python反向代码。它非常接近于卡萨帕的“神经之声”的风格,但并不完全是这样:
def backward(self, cache, target,c=leastsquares_cost, dc=leastsquares_dcost):
'''
cache is from forward pass
c is a cost
我需要使用Tableau创建一个关联矩阵表,所以我创建了一个使用Python的版本,以检查我是否做得对。
两种计算得出的数字都不一样。以python为例,Hotel3和34的相关系数为0.62,Tableau的相关系数为0.639。
我不是计算错了吗?有关使用python创建的原始数据、图表工作簿和pdf绘图,请参见此链接。
用于创建相关矩阵的代码如下:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
dat
我需要用float64精度矩阵做矩阵乘法。下面的代码在float32和矩阵()中工作,而不是在dmatrix()中工作。然而,当涉及到float64时,它就失败了。
import theano
from theano import tensor as T
import numpy
x = numpy.ones((20000, 100), dtype=numpy.float64)
m = T.dmatrix()
mTm = T.dot(m.T, m)
f = theano.function([m], mTm)
f(x)
r = f(x)
r.shape
我有以下错误:
THEANO_FLAGS
我正在尝试使用NumbaPro的cuda扩展来乘以大型数组矩阵。我最终想要的是将一个大小为NxN的矩阵乘以一个对角矩阵,该对角矩阵将作为一维矩阵(因此,a.dot(numpy.diagflat( b) ),我发现它与a*b同义)。但是,我得到了一个断言错误,没有提供任何信息。
如果我将两个一维数组矩阵相乘,我只能避免这个断言错误,但这不是我想要做的。
from numbapro import vectorize, cuda
from numba import f4,f8
import numpy as np
def generate_input(n):
import numpy as
假设你有两个numpy矩阵:
import numpy as np
n = 800
m = 16
A = np.zeros((n, 4)) #np.random.rand(n,4) if you wish
B = np.zeros(m) #np.random.rand(m) if you wish
在我的代码中,我需要将B中找到的每个值减去A的所有值,然后计算该平方,并获得给出新矩阵的最小值的索引。因此,我将有m个最小值。从这些中,我需要最小的。为了做到这一点,我现在使用了一个循环:
min_C = np.zeros(m)
for j in range(m):
C = A
我是大学计算机科学专业的学生,正在为我的Calc III课程做一个涉及奇异值分解的编程项目。其思想基本上是将m×n维的图像转换成m×n矩阵,其中每个元素是表示点(m,n)处的像素的颜色通道(r,g,b)的元组。我之所以使用Python,是因为到目前为止,Python是我唯一真正(学得很好)的语言。
据我所知,Python通常不喜欢将元组作为数组的元素。我自己做了一点研究,找到了一个解决办法,即按如下方式预先分配数组:
def image_to_array(): #converts an image to an array
aPic = loadPicture("zorak_