2019年7月

根据个人理解,其本质上是对于某些特殊的、形状不相符的数组进行一定规则的变化,使得数组间满足矩阵运算的规则。(说不定也可以理解为是简化输入的一种方式?)

首先说一句,似乎现在网上很多博客都喜欢把多维数组的维度单独称为轴。。。 为啥不干脆叫多轴数组算了

根据https://www.cnblogs.com/yangmang/p/7125458.html的介绍,广播的发生条件可以用如下方法判断: 将两个多维数组的维度数组后端对齐,依次从后往前比较,若是都满足以下条件则可以进行广播:

  1. 维度的大小(轴长)相等;
  2. 其中一个多维数组的维度大小为1(至少其中一个多维数组在该维度的轴长为1);
  3. 其中一个多维数组不存在该维度。

举例如下:

shape(5, 4, 3, 2, 1)
shape(   4, 2, 1, 1)

按照从右往左进行计数的话,有: 第一维满足条件1、2; 第二维满足条件2; 第三维不满足任何条件; 第四维满足条件1; 第五维满足条件3。 因而,由于第三维不满足任何条件,这两个多维数组间在运算时不能发生广播;但若去除第三维,可以由第二个数组进行广播,使用尾部剩余维度的数据填充,直至与第一个数组形状相同,然后进行元素级别的运算。

数组 [[[[1,2], [3,4]],

[[1,2], [3,4]]],

[[[1,2], [3,4]],

[[1,2], [3,4]]],

[[[1,2], [3,4]],

[[1,2], [3,4]]],

[[[1,2], [3,4]],

[[1,2], [3,4]]]] 可以与数组 [[[1],[2]]] 进行相加操作,结果为上面数组中的[[1,2],[3,4]]单元全部变为[[2,3],[5,6]]。 有没有两个多维数组间的相互传播有待测试。

  1. numpy定义和使用的矩阵类型为numpy.ndarray

  2. 正态分布的随机数多维数组
numpy.random.rand()

用于生成一组[0,1)范围内的随机数。根据函数定义描述,生成的随数值符合正态分布。 可以向该函数传递n(n>=1)个整型参数,返回格式为一个大小与传递参数值相同的n维矩阵。

  1. 矩阵乘法
<ndarray> * <ndarray>        # 元素级乘法
numpy.dot(mat1, mat2)        # 矩阵点乘
numpy.cross(mat1, mat2)      # 矩阵叉乘
numpy.tensordot(mat1, mat2)  # 张量乘法?

四种乘法,传入两个ndarray,返回他们的相应操作结果。 若是不符合相应的规则,将会报出ValueError错误。

  1. 矩阵区域赋值

左侧使用:[]运算符限定好范围,右侧放待赋值的矩阵,用等号连接即可。

  1. 字体颜色配置 QQ截图20190720162806.jpg

  2. 标准C头文件找不到的问题 根据这个页面描述,(应该是从vs2015起)标准C头文件就不再作为编译器的一部分,而是作为Windows SDK(即Windows软件开发套件)的一部分,因而,若是在安装VS时没有勾选任一版本的Windows SDK的话,会导致编译时报出找不到头文件的错误,这不是路径配置的问题!(供各位打算节省空间安装VS的读者参考)

可能是搜索关键词不对的原因吧。。弄了两天,换了个查法就找到解决方案了 仍然来自神奇的stackoverflow:https://stackoverflow.com/questions/42829675/visual-studio-2017-fails-to-install-offline-with-unable-to-download-installatio 在制作好的离线安装包目录下有一个certificates文件夹,把里面的证书全部安装至本地计算机,然后启动安装程序即可。 Ура!!!!!! 盯着procmon看了一上午,打算找出潜在的缓存文件或者注册表项,结果唯一发现的可疑点就是安装程序在注册表证书这一块做了不少操作,结果还真是缺少证书啊。。。 反正身边也没有电脑做实验了,win7虚拟机的.NET版本不够,懒得升级了,因而并没有做测试。 不过so大佬们的操作我还是十分相信的

一般情况下这是Ubuntu系统下的包管理工具apt报出的错误。出错的原因通常为包的描述文件损坏。 描述文件的位于/var/lib/dpkg/info,文件后缀为.list,可以用vi查看对应的文件内容。正常情况下为每行一个路径,损坏后会出现大量非法字符。 修复的方法之一为,使用同一个系统的描述文件进行覆盖。

根据stackoverflow上的帖子,提供了这样一种方法:

  1. 删除对应的.list.postrm文件
  2. 执行以下命令:
    sudo dpkg --configure -a
    sudo apt update
    sudo apt upgrade

当然,提一句,根据我的个人理解,后两句是升级软件用的,盲目yes可能会更新某些关键软件版本,导致翻车。 提一个想法,不知道能不能使用apt的--reinstall参数对指定的包进行更新。