【发布时间】:2015-05-19 13:18:20
【问题描述】:
我想将矩阵与大值相乘
这是我的代码
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 of 10 \n")
N=10**N
startTime = time.time()
try:
P=numpy.random.randint(-100,100,size=(N,N))
Q=numpy.random.randint(-100,100,size=(N,N))
C=mm(P,Q)
except MemoryError:
print("Memory error")
try:
A=numpy.random.randint(-1000,1000,size=(N,N))
B=numpy.random.randint(-5000,5000,size=(N,N))
except MemoryError:
print("Memory error")
try:
D=mm(A,B)
D=mm (D,C)
print D
except NameError:
print("name error")
elapsedTime = time.time() - startTime
print elapsedTime
我得到了 RuntimeWarning: overflow 在 long_scalars ERROR 中遇到的任何方法来跳过这个错误?它显示的答案是错误的吗?
【问题讨论】:
-
NumPy 说得比我好的人能确定这是使用 int32 还是 int64 吗?如果是前者,OP可能只是扩大它们并完成它。当我们这样做时,OP 可能应该只使用
ndarray.dot()来进行矩阵乘法... -
@Kevin dot 没有问题,但我必须在不使用此函数的情况下使用它,我想如果我将矩阵值设为 int64 就可以了,但我不知道该怎么做!!
-
在进行矩阵乘法之前,您可以使用
astype()将数组转换为 int64。 -
没用 :( 或者我不能用这种方式
-
如果您使用astype(float) 生成浮点矩阵项会怎样?
标签: python numpy matrix runtime-error