我是Python的新手。我在做矩阵乘法时遇到了麻烦。我有两个列表:
A =[3.0,3.0]
# 1 by 2 matrix
B =[[ 50.33112583, -49.66887417],
[-49.66887417, 50.33112583]]
# 2 by 2 matrix
Result should be :
# 1 by 2 matrix
c = [1.9867549668874176, 1.986754966887446]
Right now
在下面的代码中,我使用numpy.dot来加快计算速度。
u = numpy.zeros((l, l))
wp = numpy.zeros((l,2))
# some code which edits u and wp
for x in range(N):
wavg = numpy.dot(wp[:, 0], wp[:, 1])
wp[:, 0] = 1.0/wavg*numpy.dot(u, numpy.multiply(wp[:, 0], wp[:, 1]))
对于小l,最慢的部分是外循环。现在我问自己有没有办法摆脱这个循环?
编辑:用数学术语来说,这段代码如下所示
我的问题是关于以下代码:
%%time
import numpy as np
n_elems = 95
n_repeats = 100000
for i in range(n_repeats):
X = np.random.rand(n_elems, n_elems)
y = np.random.rand(n_elems)
_ = X.dot(y)
我在8核机器上使用Python 3.5.5和numpy版本1.14.0在iPython (版本6.2.1)中运行此程序。
我得到以下输出:
CPU times: user 8.93 s, sys: 439 ms, total
我想将矩阵与大值相乘。
here is my code
import time
import numpy
def mm( mtx_a, mtx_b):
tpos_b = zip( *mtx_b)
rtn = [[ sum( ea*eb for ea,eb in zip(a,b)) for b in tpos_b] for a in mtx_a]
return rtn
print ("first part of project of OS")
N=input("select the size of N*N matrix by entering the power
我正在写一个程序来找出两个向量之间的余弦相似度。对于小的文本文件,它工作得很好,但对于大数据,它会给出错误。我已经经历了许多广播的例子,但不能得到实际的问题。(在p=x*y行出现错误)
x = numpy.dot(u, u.T)
y = numpy.dot(v, v.T)
p = x * y
value = numpy.dot(u, v.T) / p
p=(x*y)
ValueError: operands could not be broadcast together with shapes (224,224) (180,180)
我正在解一个线性方程组Ax=b。众所周知,A是平方的并且是满秩的,但它是一些矩阵乘法的结果,例如A = numpy.dot(C,numpy.dot(D,E)),其中结果可以是1x1,这取决于输入C,D,E。在这种情况下,A是一个float。
即使当b是1x1时,也会确保它是向量。
我目前正在做
A = numpy.dot(C,numpy.dot(D,E))
try:
x = numpy.linalg.solve(A,b)
except:
x = b[0] / A
我搜索了numpy的文档,没有找到其他可以接受第一个标量或第二个输出数组的solve和dot替代方案。实际上,num
我想用numpy.sum来计算两个数组的乘法和。我使用了以下代码:
p=10
for i in range(0,p):
popcost=numpy.zeros((1,p))
cur=numpy.array(pop[i,:])
popcost[0,i]=numpy.sum(numpy.dot(cur,fc),1)
pop本身是(p*m)数组,而fc是(1*m)数组。我得到以下错误:
'axis' entry is out of bounds
我不知道问题出在哪里。任何帮助我们都将不胜感激
注意:我对表单‘只需使用循环’的答案不感兴趣,我想用numpyish的方式来做。
我是Python的初学者,我想使用numpy ndarray进行以下操作:给定一个数字序列t和另一个数字序列b,对于每一个t[i],我想计算列表t[i]*b并将其存储为一个最终数组中的一个新行。示例:
t = [3,4]
b = [1,2,3,4]
那么结果应该是某种形式的列表编码。
[
[3,6,9,12], # 3 * the array of b's
[4,8,12,16] # 4 * the array of b's
]
在我最近看到的一个程序中,这是完美的,但是当我想自己做它
我试图计算两个大小分别为(162225,10000)和(10000,100)的numpy数组的点积。但是,如果我调用numpy.dot(A,B),就会发生MemoryError。于是,我试着写我的实现:
def slower_dot (A, B):
"""Low-memory implementation of dot product"""
#Assuming A and B are of the right type and size
R = np.empty([A.shape[0], B.shape[1]])
我注意到numpy.dot()函数的一个有趣的行为。我的企业RedHat 6.7box有2个Xeon,每个CPU有12个核心。我运行以下代码片段,然后检查htop中的CPU利用率
以下代码使用我的服务器上的所有核心:
import numpy as np
a = np.random.rand(1000, 1000)
b = np.random.rand(1000, 5)
z = a.dot(b) #or use %timeit a.dot(b) if you use ipython
编辑:下面的是运行上述代码时htop的屏幕截图
但是,当我像下面这样向b再添加一个维度时,就只使用了一个核