python 矩阵同一列相乘

我想写一个矩阵,矩阵的大小由变量决定,同时,想写一个遍历函数,让矩阵中每行相乘。

DeviceList = []
DeviceList =[1, 2 , 3]

FuzzyMatrix = np.empty(np.empty(((len(DeviceList), len(DeviceList))))
for i in range(1, len(FuzzyMatrix)+1):
    score = []
    a = FuzzyMatrix[i][0]*FuzzyMatrix[i][1]*FuzzyMatrix[i][2]
    score.append(a)

现在如果我把DeviceList大小变化,比如增加一个数据。那么 我算 a 的乘积也要变化,有没有一种方法比较灵活。让算a那个同行的乘积会随着DeviceList大小自动变化呢?

import numpy as np

n = 3
m = np.zeros((n, n))

# assign values to m:
for i in range(n):
    for j in range(n):
        m[i,j] = i+j*2
print(m)

score1 = []
score2 = []
for i in range(n):
    score1.append(np.multiply.reduce(m[i,:])) # 同一行所有元素相乘
    score2.append(np.multiply.reduce(m[:,i])) # 同一列所有元素相乘

print(score1)
print(score2)

你这每次都是生成的无限接近0的数
而且a = FuzzyMatrix[i][0]*FuzzyMatrix[i][1]*FuzzyMatrix[i][2]你这运算不会报错吗

使用for循环对ndarray对象显式地实施遍历,基本上都属于问题代码。计算各行或各列的积,应该使用prod函数。

import numpy as np
a = np.arange(12).reshape(3,4)
a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
np.prod(a, axis=0) # 计算各列乘积
array([  0,  45, 120, 231])
np.prod(a, axis=1) # 计算各行乘积
array([   0,  840, 7920])

首先你这个数组下标,从1开始有问题吧?其次,你如果想要动态的增加,很简单,在第一个for里,再写一个for循环,然后累乘不就行了,像这样

for i in range(0,len(FuzzyMatrix))  #行长度
      a=1
      for j in range(0,len(FuzzyMatrix))  #列长度
             a=a*FuzzyMatrix[i][j]
      print(a)  #输出每一行的乘积

有帮助的话采纳一下哦!

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^