Python matmul将数组视为整数
我一直在尝试为矩阵创建一个类,我已经做到了:Python matmul将数组视为整数,python,arrays,numpy,matrix,Python,Arrays,Numpy,Matrix,我一直在尝试为矩阵创建一个类,我已经做到了: import numpy as np import random class matrix(): def __init__(self, rows, cols): self.rows = rows self.cols = cols self.matrix = np.array([[0 for x in range(self.cols)] for y in range(self.rows)
import numpy as np
import random
class matrix():
def __init__(self, rows, cols):
self.rows = rows
self.cols = cols
self.matrix = np.array([[0 for x in range(self.cols)] for y in range(self.rows)])
def multiply(self, a):
self.matrix = np.matmul(self.matrix, a)
def randomize(self):
for j in range(self.rows):
for i in range(self.cols):
self.matrix[j][i] = random.randint(1,10)
m = matrix(4,3)
a = matrix(3, 3)
m.randomize()
a.randomize()
m.multiply(a)
我希望它能以矩阵的形式将m乘以a。我有一个函数,它给每个值一个介于0和10之间的nr
但我得到了这个错误信息:
ValueError: matmul: Input operand 1 does not have enough dimensions (has 0, gufunc core with signature (n?,k),(k,m?)->(n?,m?) requires 1)
我确信这只是我忽略的一个小问题,但如果不是,这是一个更大的问题,请不要犹豫问问题。
提前感谢,因为您正在尝试将一个Numpy对象与矩阵类型的对象相乘。在乘法函数中,应该调用
np.matmul(self.matrix,a.matrix)
。此外,正如Barmar所建议的,您可以通过使用self.matrix=np.zero((行,列))
来提高代码的性能
将numpy作为np导入
随机输入
类矩阵():
定义初始化(self、rows、cols):
self.rows=行
self.cols=cols
self.matrix=np.zero((行、列))
def倍增(自身,a):
self.matrix=np.matmul(self.matrix,a.matrix)
你在哪里定义你的随机化()
矩阵?我把它排除在外,这样它更可读,我现在就添加它:)仅供参考,你可以用self.matrix=np.zero((行,列))初始化矩阵。
谢谢你对这个函数并不陌生:)你这样做是为了学习吗?好吧,这让人尴尬。非常感谢,特别是关于np.zero部分。我对此并不陌生