资讯详情

从零开始的人工智能学习(一)

人工智能学习从零开始(一)

发布时间:2019-01-03 09:31,

浏览次数:319

本周我主要学习的是基础。python语法和科学计算,有人说人工智能不需要太高的编程能力,但我觉得学习不好很可惜。

我学习python语法使用愚蠢的方法python3》

,不得不说,作者真的把我们当孩子教,书里有配套的教学视频,基本上是手把手教的。本书最大的优点是作者会尝试的破坏一个完整的程序,然后展示出所谓的bug让读者去debug,我认为这种学习方法比简单地学习枯燥的语法更有趣、更有效。视频是英语语音,中文字幕,也可以练习英语听力,不是吗?一举两得,语速和语调都很合适,一举两得。

在学习的过程中,因为是学习AI,所以我下载的是anaconda一开始不知道科学包。anaconda那些程序是什么?dalao才知道:

Spyder基于B/S的交互式python解释环境

Jupyter基于C/S的交互式python解释环境

Reset那你加油,有个工地英语就知道意思了。

Anaconda Prompt,命令行下的anaconda,可以配置一些环境,切换每个环境。

Anaconda Navigtor,在用户交互界面下anaconda,可以配置一些环境,切换每个环境。还有一些学习文件和社区信息。

以上都截取了大佬提供的信息。不知道有没有!但我目前主要用的是python3.7包。不得不说,python科学包真的太强了。anaconda的安装教程我截取了一段链接:

https://jingyan.baidu.com/article/3f16e0031e87522591c10320.html

书中使用的是win powershell来跑python,那我就跟样学样使用吧。关于命令行的介绍,书上附录就有了。看视频也可以学。

使用文本编辑器visual studio code,其实code也能跑python,但作者说用命令行比较好。

我还下了一个python开发的开发者都应该使用它IDE--pycharm。下载很简单,网上也有教程csdn上。

https://blog.csdn.net/pdcfighting/article/details/80297499

关于注册码,csdn也有

https://blog.csdn.net/u014044812/article/details/78727496

不得不说,csdn真的很强大啊。

接下来是学习,本周学习python语法很简单,和c有很多共同点,但是想快速入门python,有人向我推荐Learn X in Y minutes

( https://learnxinyminutes.com/docs/python/

),

因为是全英文版,也可以练英语,对吧?接下来是我的学习笔记,和翻译没什么区别,但也增加了我实际操作后的一些探索和经验。

x = 'apple' y = 'lemon' #打印字符串中的第一个字符 print("This is a string."[0]) # =>T

#打印字符x的第二个字符 print(x[2]) # =>p #打印字符串长度 print(len(x)) # =>5 print()

#以下四种方式是嵌套字符串 print("The items in %s and %s" %(x, y)) # =>The items in apple

and lemon print("{} is a {}".format(x, y)) # =>apple is a lemon print("{0} can

be {1}".format(x, y)) # =>apple can be lemon print(f"{x} is like {y}") #

=>apple is like lemon print() #这里要提一下==与is的区别 #==比较对象的内容是否完全相同(无论地址是否相同)

#is比较两个实例对象是否完全相同,或者这两个实例是否相同 #但在研究is当我有一个颠覆我想象的发现时

#我发现实验和理论我发现实验和理论结果不同,然后发现 #如果声明一个变量是一个数字或字符串,等同于另一个变量,那么这两个变量是一个地址 num

= 1 lum = 1 print(num is lum) # =>True #用id查询地址 print(id(num), id(lum))#

=>140704949384016 140704949384016 print() #重新赋值其中一个变量名 num = num * 2 print(num

is lum) # =>False print(id(num), id(lum)) # =>140704949384048 140704949384016

#实验结果令人难以置信。可以看出,两个相同地址的原始变量发生了变化 #变量值不变lum数值变量的地址不变num新地址被分配了

#进一步探索现在的变化lum值,使其与num的值相同 print() lum = lum * 2 print(num is lum) # =>True

print(id(num), id(lum))# =>140704949384048 140704949384048

#果不奇然,当lum的值与num相同时,lum地址改为num原地址lum地址不见了

#太神奇了,不得不说,python我们看不到的许多地方都做了很多优化 #那么谁主导这个地址呢?lum?是num?还是只是这个值? print()

#我们继续,首先重新声明一个变量 kum = 5 print(id(kum))# =>140704949384144 kum = 50

print(id(kum))# =>140704949385584 gum = 5 print(id(gum))# =>140704949384144

#可以发现,kum当值改变时,地址也会改变。 #当新声明一个变量,变量等于以前的值时,新变量的地址与以前完全相同。

#现在,我们可以认为这个地址是值主导的 #但是当这个地址没有变量名的时候,里面是否还有这个值,我不知道是否有这个值。 print()

#既然如此,就符合要求is判断的条件只有列表,所以 #设置两个列表 li1 = [1,2,3] li2 = [1,2,3] print(id(li1),

id(li2))# =>2686962852360 2686962852424 print(li1 == li2) # =>True print(li1 is

li2) # =>False print() #None代表空,C中NULL与其他任何数字相比,类似False print(None is None)

# =>True print(None is x) # =>False print(x is x) # =>True print(x == y) #

=>True print(y is x) # =>True print() #布尔型常量,当函数参数为空时,0或所有其他代表空的数都返回False

print(bool(0)) # =>False print(bool(1)) # =>True print(bool()) # =>False

print(bool(x)) # =>True print(bool(None)) # =>False print()

#以下是最简单的向程序输入数据的方法,input函数 #input_string_var = input("Enter some data:")

#print(input_string_var) #类似c(x < y ? true : false) #如果条件确定,则执行语句2

print(x < y) print("statement1" if x < y else "statement2") print("yahoo!" if 3

< 2 else 2) print() 以下是列表的应用 #设置空列表 li = [] #设置非空列表 other_li = [4,5,6]

#在列表末添加函数append中的参数 li.append(1) li.append(2) li.append(3) print(li) # => li =

[1,2,3] #删除最后一个列表值 li.pop() print(li) # =>li = [1,2] #赋值指定列表位置 li[0] = 42

print(li) # =>li = [42,2] #打印列表的最后一列表值 print(li[-1]) # => 2 print()

#重新赋值列表,列表从0开始下标,就像c一样 li = [1,2,3,4,5] #索引下标1-3,包括列表切片1不包括3,类数学[x, y)

print(li[1:3]) # => [2,3] #列表切片下标大于或等于2 print(li[2:]) # => [3,4,5,6]

#列表切片小于5的列表切片 print(li[:5]) # => [1,2,3,4,5] #从0开始索引步长为二的列表切片 print(li[::2]) #

=>[1,3,5] #倒置列表 print(li[::-1]) # =>[6,5,4,3,2 #删除列表的特定位置 el li[2] print(li)

# =>[1,2,4,5,6] #两个列表相加为合并列表 print(li + other_li)# =>[1, 2, 4, 5, 6, 4, 5, 6]

#print(最小下标闭区间:最大下标开区间:步长) print() li = [1,2,3] other_li = [4,5,6,2] #连接列表

li.extend(other_li) print(li) # =>li = [1,2,3,4,5,6,2] #删除第一次出现的特定值

li.remove(2) # =>li = [1,3,4,5,6,2] print(li) #在指定位置插入一个元素(下标,元素)

li.insert(1,2) # => [1,2,3,4,5,6,2] print(li) #查找特定值的下标 print(li.index(1))# =>0

print(li.index(2))# =>1 print(li.index(3))# =>2 #检查元素是否存在于列表中 print(1 in li) #

=> True #查询列表长度 print(len(li)) # =>7 print() #元组类似于列表,但不可变

#只要不改变元素,类似列表的操作,元组都可以完成 tup = (1,2,3) print(tup[0])# =>1 #类似于tup[0] =

3,这种改变元素值的语句将会报错 print() #可以将元组(或列表)解包为变量 a,b,c = (1,2,3) #现在a = 1, b = 2, c =

3 #声明也可以如下不加括号 d,e,f = 4,5,6 print(a,b,c,d,e,f)# =>1,2,3,4,5,6

#如果给一个变量名赋予多个值,将默认创造元组 g = 4,5,6 #=>(4,5,6) print(g) #交换数值,e = 5,d = 4 e,d =

d,e print(e,d)# =>4,5 print() #下面是字典的应用,关键字和值必须要成对,不然会报错 empty_dict = {}

filled_dict = {"one" : 1, "two" : 2, "three" : 3} #使用[]查找关键字对应的值

print(filled_dict["one"])# => 1 #将所有的关键字作为列表打出 print(filled_dict.keys())# =>

["one", "two", "three"] #在此,文章上写道不一定会按顺序打出,但我运行的时候都是按顺序打出来的 #将所有的值作为列表打出

print(filled_dict.values())# =>[3,2,1] #也不一定按顺序打出,但我运行的时候还是按顺序的 #将所有的组合作为列表打出

print(filled_dict.items())# =>[("one", 1), ("two", 2), ("three", 3)]

#类似于列表的操作,如下,注意只能查找关键词 print("one" in filled_dict) # =>True print(1 in

filled_dict)# =>False #关键词不存在时,会报错,如filled_dict["Four"] #为了避免报错,我们可以使用get()

print(filled_dict.get("one")) # => 1 print(filled_dict.get("four")) # => None

#当字典缺少值时,get()支持返回默认参数,当关键词不存在时,返回默认参数 print(filled_dict.get("one", 4))# =>1

print(filled_dict.get("four", 4))# =>4 #注意填充的get("four")依旧返回None,get不在字典中设值

#要设置值的话可以用类似列表的方法 filled_dict["four"] = 4

由于这一周在复习备考期末考试,所以就只看了一点点。如果笔记存在错误,都可以指出来,我会一一道谢并更改的,英语水平不是很高,见谅见谅。

标签: kum2孔连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台