机器学习储备(7):numpy一维数组和矩阵
Numpy 是 Python 语言中广泛使用的科学计算库,在功能上类似于 MATLAB 的高效数值计算能力 。 本文主要探讨了脊回归模型中收缩率与权重参数之间的关系及其对应的 numpy 操作规范 。 在这一过程中 , 我们不仅回顾了 numpy 的基本操作 , 还深入研究了一些高级运算方法 。
1 矩阵相加
原来A和B还能这样相加,请看下列:
A = np.array( [1,2,3] )
np.shape(A)
(3,)
B= np.array([ [10],[11]] )
np.shape(B)
(2,1)
A+B
array([[11, 12, 13],
[12, 13, 14]])
在我们的线性代数课程中,在进行矩阵相加时必须满足A和B是同型矩阵的要求,并均为m行n列。然而,在使用numpy对上述两个数组进行操作时,则不符合传统意义上的同型矩阵条件但仍然可以进行相加运算。那么其背后的原因又是什么呢?
numpy自动生成必要的处理步骤,在填充矩阵时会将A数组的行数调整至与B一致,并将B数组的列数调整至与A一致。进而,在编程过程中,默认情况下会根据需要对矩阵进行填充。
array([[1, 2, 3],
[1, 2, 3] ])
将B转化为:
array([[10, 10, 10],
[11, 11, 11]])
然后这相当于在处理线性代数中的同型矩阵问题。进而进行相应的加法运算。那么为什么要采取这样的策略呢?注意在线性代数中,默认情况下所有矩阵都被视为二维结构。考虑之前提到的那个对象A,在这种情况下它实际上不是一个典型的矩阵结构,请参考本文第3部分以确定其维度。因此,在计算过程中需要将该对象提升至多维。
2 矩阵转置和shape
大部分情况都和线性代数中的理论相同,比如
A = np.array([[11, 12, 13],
[12, 13, 14]])
np.shape(A)
(2,3)
np.shape(A.T)
(3, 2)
当前阶段与我们传统意义上的理解基本一致。然而,在某些情况下会很特殊例如当数组仅包含单一行时
B = array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),看一下几行几列:
np.shape(B)
(10,)
此处即与线性代数存在显著差异。在此情境下,在numpy环境中计算得到的形状参数为10,在具体运算过程中,则是因为该数据结构属于一维分布特性所导致的结果。值得注意的是,在这一计算结果中,默认假设所有操作对象均为二维结构,在线性代数框架下,默认假设所有矩阵均为二维结构
然后,再做转置,如下
np.shape(B.T)
仍然是:(10,)
在B长这个样子下,转置后的样子与原来的样子一样。
通过研究分析发现,在计算形状时(即形状属性),我们发现变量B及其转置B.T 都带有单个方括号对。因此,在一维情况下(即只有一个维度),其形状属性仅仅显示出一个数值,并且无法描述二维结构的存在。
为了方便构造类似于线性代数中的那种1行10列的矩阵,在NumPy中提供了一种便捷的方法。
B2 = array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]])
此时B2的 shape 结果显示:(1,10)
那么它是如何实现这一功能的呢? 通过在数组前插入新的维度(使用 np.newaxis),可以使数组形状发生变化:B[np.newaxis,:] 。执行该操作后,数组将被转换为 B2。
由此引出了numpy中的一个重要概念,维数 dimension
3 numpy中的dimension
我们逐一比较上一节中的B和B2之间的差别在哪里,并使用numpy库中的ndim方法来获取它们维度数目。
B = array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
np.ndim(B)
1
B2 = array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]])
np.ndim(B2)
2
再体验一个维数为3的数组:
test = [[[1,2,3]],[[4,8,12]]]
np.ndim(test)
3
4 总结
总结以上所述,在numpy中的一维数组对象与传统意义上的矩阵存在显著差异,并由此导致它们的运算方式也有所不同;然而,在numpy中的二维数组对象与传统的矩阵概念是完全一致的。因此,在处理这些二维数组时,依照传统数学中的矩阵理论进行计算操作,则能够遵循我们熟悉的逻辑体系。
谢谢您的阅读,期待您的到来。

欢迎关注《算法channel》

主要发布与算法分析及其应用相关的消息。致力于培养并提升思维能力,在过程中特别强调对背后基本原理的深入探究。“刨根问底”的探索精神贯穿始终,在写作中坚持严谨性和准确性作为基本原则之一的目标就是提供实用且富有启发性的文章内容,请您的持续关注是我们共同的目标
