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库的array和矩阵操作,包括array与矩阵的乘法规则差异,以及如何向list、array和矩阵中添加元素。通过示例代码展示了不同类型之间的乘法运算,如矩阵乘法遵循传统矩阵运算规则,而数组乘法则是元素间相乘。此外,还指出了list使用append()添加元素,而numpy的array和矩阵需使用row_stack或column_stack。
1763

被折叠的 条评论
为什么被折叠?



