Python使用列表进行数学运算,将列表转换为矩阵

时间:2014-04-27 03:16:22

标签: python arrays list python-2.7 matrix

我有两个清单:

list_1 = sorted(random.sample(xrange(1, 101), 10))
print list_1

list_2 = sorted(random.sample(xrange(1, 101), 10))
print list_2

注意:在我的实际项目中,其中一个列表是根据用户输入构建的。

然后我想将这些转换为矩阵并做一些简单的数学运算。例如,也许将一个矩阵从1x10反转到10x1,这样我就可以将它们相乘,或类似的东西。

我该怎么做?我已经读过像NumPy和SciPy这样的软件包,但我对Python很新,不知道如何安装它们,或者我甚至需要它们提供的功能。我很感激任何建议。

1 个答案:

答案 0 :(得分:1)

以下是inner productsouter products的基本示例:

import random
import numpy

list_1 = sorted(random.sample(xrange(1, 101), 10))
list_2 = sorted(random.sample(xrange(1, 101), 10))

A = numpy.array(list_1).reshape(1,10)
B = numpy.array(list_2).reshape(10,1)

# Inner product
print A.dot(B)

# Outer product
print A.T.dot(B.T)

输出如:

[[22846]]
[[   5   21   26   33   41   42   43   74   78   81]
 [  15   63   78   99  123  126  129  222  234  243]
 [ 105  441  546  693  861  882  903 1554 1638 1701]
 [ 110  462  572  726  902  924  946 1628 1716 1782]
 [ 135  567  702  891 1107 1134 1161 1998 2106 2187]
 [ 165  693  858 1089 1353 1386 1419 2442 2574 2673]
 [ 190  798  988 1254 1558 1596 1634 2812 2964 3078]
 [ 270 1134 1404 1782 2214 2268 2322 3996 4212 4374]
 [ 375 1575 1950 2475 3075 3150 3225 5550 5850 6075]
 [ 465 1953 2418 3069 3813 3906 3999 6882 7254 7533]]

请注意,我使用.dot进行矩阵乘法运算。如果你没有得到成对的操作:

# Matrix multiply
C = numpy.array([[1,2],[3,4]])
print C.dot(C)

# Pairwise operation
print C*C

结果:

[[ 7 10]
 [15 22]]
[[ 1  4]
 [ 9 16]]