您的位置:首页 > 编程语言 > Python开发

Python numpy库中的array,list与矩阵的乘法,以及增添元素的方法

2017-05-21 13:44 573 查看
Python作为一类弱类型语言。习惯了C/C++或者是Java等强类型语言的人在刚刚上手的时候可能会有些不习惯。在数据处理中,我们经常会用到numpy库中的数组,列表与矩阵等参数类型。而这些类型在调用某些方法的时候如果参数类型错误,往往会得不到想要的结果。

注意数组有另外一个array库,array库中数组的使用方法和numpy库中的数组有很大的不同。注意不要混淆。

一. array与矩阵的乘法

输入以下代码:

from numpy import *
a=[[1,3],[1,5]]
b=mat(a)
c=array(a)
print('a is', a)
print('b is', b)
print('c is', c)


代码中定义了a属于list(列表),b调用了numpy中的mat()函数,将list转换为了矩阵。而c调用了numpy中的array()函数,将list转换为了array(数组)。

运行代码,结果如下:

a is [[1, 3], [1, 5]]

b is [[1 3]

[1 5]]

c is [[1 3]

[1 5]]

从输出的结果中无法直接分辨出b和c的差异。在上面的代码后面继续输入,测试numpy.shape()函数的输出结果,以及乘法的结果。

print('a的shape是', shape(a))
print('b的shape是', shape(b))
print('c的shape是', shape(c))
#print('a*a的结果是',a*a)   #该语句会报错
print('b*b的结果是',b*b)
print('c*c的结果是',c*c)


输出的结果如下:

a的shape是 (2, 2)

b的shape是 (2, 2)

c的shape是 (2, 2)

b*b的结果是 [[ 4 18]

[ 6 28]]

c*c的结果是 [[ 1 9]

[ 1 25]]

从结果中可以看到shape()函数作用在列表,数组以及矩阵上都可以返回相应的维度值。

而乘法则有很大的区别。矩阵的乘法是和通常的矩阵乘法定义一致。数组的乘法是数组的各个元素对应直接相乘。列表则无法进行乘法运算。

二. 增加元素

对于list来说,增加元素可以用append()函数。

在上面的代码下添加以下代码:

e=[2,3]
a.append(e)
print(a)


输出结果为:

[[1, 3], [1, 5], [2, 3]]

而numpy库中array和矩阵都没有append()函数。增加元素应该使用row_stack或者column_stack。

在上述代码中继续添加以下语句:

b=row_stack((b,e))
c=column_stack((c,e))
print("b is",b)
print("c is",c)


输出的结果如下:

b is [[1 3]

[1 5]

[2 3]]

c is [[1 3 2]

[1 5 3]]

numpy库有很多函数对数组,列表或矩阵进行运算时都会得到不一样的结果。以上只是其中几个例子。在程序出错的时候,可以通过debug窗口查看变量的类型,判断是否是由于类型不匹配而导致的错误结果。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python numpy 矩阵乘法