机器学习入门学习笔记1

在 numpy 中, 和 的区别,以下面两个代码为例:

在运行这两个段代码之前,我先试着判断两个代码最终输出的结果,结果第 2 段代码我判断错了,我判断的输出为: ,判断思路是——根据向量化运算,用a数组的元素和新的数组 的元素相加。但粗心的我在两个地方都搞错了,犯了两个低级错误——当 时,原来指向数组 的 在这里就已经发生改变,即现在指向数组 ,然后,我没注意到的 2 个地方是——虽然 所指向的数组改变了,但没注意到 和 这两个地方,误以为要打印的变量是 ; 而正确的结果应该是 ,因为要打印的是 变量,且 是指向数组 的。

知道真相的我尴尬症要犯了……

PS: 在numpy中叫原位运算符——它会把所有改变的值放在原来数组中的原来的位置,而不是重新创建或复制一个新的数据。以下面的代码为例:

在没有运行这段代码我的测算的打印结果是: ,这里我又错了,正确的结果应该是: ,很意外,因为在我看来,按照 Python 中列表的特性的话, 的数组是从 数组中截取 ,也就是 ,然后将 的第 1 个元素重新赋值为 ,那结果应该是 没毛病,可惜这是Python列表的特性,不是numpy数组的,又犯了一个思维错误~

这里面, 的运算和改变其实都是在 数组对应的位置进行的,它只是在 数组中创建了一个 ,所有的数组运算都在这个区域完成。可以看作是一个书架上各个独立的小格子,里面的书相当于数组的元素,当我们想把数组中的某段区域拿出来做运算时,就相当于我们需要拿取书架格子上的某一本或几本书来读或者修整;当改完后,就需要将这些元素重新放回数组原来的位置,即,我们在把某格子上的书拿出来后,无论是阅读,还是换为另外一本书放回格子原来的位置上。——一个不是很恰当的类比。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180609G1NHYB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券