【问题标题】:RuntimeWarning: overflow encountered in long_scalars in matrix multiplyRuntimeWarning:在矩阵乘法中的 long_scalars 中遇到溢出
【发布时间】: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


【解决方案1】:

要乘以数组,您可以使用numpy.dot(A,B)

 A=numpy.random.randint(-1000,1000,size=(1000,1000))
 B=numpy.random.randint(-5000,5000,size=(1000,1000))
 C=numpy.dot(A,B)
>> array([[ -19276757, -143164893,  -46042782, ...,   54192473,  -11723491,
         -24682938],
       [ -13712042,  -81161007,  -10673794, ...,  -60976103,   12684946,
         -38034048],
       [ -33019063,  -31452735,    6885214, ...,  -11402430,  -67335345,
          28926860],
       ...,
       [ -75416394,  -86704514,   55883100, ...,   -9195721,   14717256,
           1028573],
       [ -73945244,   72442826,  -38529094, ...,   -1450784,   34663409,
         -88472364],
       [ -21366137,   91174501,   32863977, ...,   11465498,   57130349,
          47305071]])

【讨论】:

  • 我知道但我不想使用这些功能,我只是想比较你说的方式和我的方式的性能。但我的方式遇到了一些问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
  • 2011-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多