广播机制:
如果两个数组的后缘维度的轴长度相符或其中一方的轴长度为 1,则认为它们是广播兼 容的。广播会在缺失维度和轴长度为 1 的维度上进行。
每次创建数组时,都得让他成为列(n x 1维矩阵)/行向量,否则会出现奇奇怪怪的bug,不要让一维数组参与运算。x.reshape(5,1)
疑问点:X_flatten = X.reshape(X.shape[0], -1).T (矩阵扁平化处理)
# 将一个维度为(a,b,c,d)的矩阵转换为一个维度为(b∗c∗d, a)的矩阵
# A trick when you want to flatten a matrix X of shape (a,b,c,d) to a matrix X_flatten of shape (b ∗∗ c ∗∗ d, a) is to use:
X.reshape(X.shape[0], -1).T
解决一个问题:reshape中的参数 -1
参数-1就是不知道行数或者列数多少的情况下使用的参数,所以先确定除了参数-1之外的其他参数,然后通过(总参数的计算) / (确定除了参数-1之外的其他参数) = 该位置应该是多少的参数。
对于一个已知的多维数组,你想改变它的形状,你可以选择直接根据已知元素数量确定好各个维度大小,这个-1无非是偷了个懒(个人理解,这个-1就是在不知元素个数时派上用场),当你确定好其它维度的硬性要求,计算机根据元素个数一除,就知道-1这个地方的值了。
学到第一门课第四周
编程作业写道第二周的第二个作业 写了一半。