visualize-ml / book1_python-for-beginners Goto Github PK
View Code? Open in Web Editor NEWBook_1_《编程不难》 | 鸢尾花书:从加减乘除到机器学习;请多多批评指正!
Book_1_《编程不难》 | 鸢尾花书:从加减乘除到机器学习;请多多批评指正!
图17里有一行注释:
”# 这一层相当于消去 P 所在的维度,即压缩“
但是代码里并没有给出P具体是指什么?
Cheers,
94mu.
第三段”再举个几例子,很多函数都返回具体值,比如len() 返回list 元素个数,range() 生成一个可以用在for 循环的整数序列,list() 可以将。“
这一段最后”list()可以将。“没有写完。
Cheers,
94mu.
https://github.com/Visualize-ML/Book1_Python-For-Beginners/blob/main/Book1_Ch02_Python_Codes/Bk1_Ch2_01.ipynb 中 3.2.1 等差数列 直接跳到 3.2.3 二元函数,是否应为“3.2.2 二元函数”?
书中原文是:
“esc -> M : 在按下esc进入编辑模式后,将当前cell从代码markdown转成文本”
我的理解是这句话后面是不是应该改成:
“将当前cell从代码转成文本markdown”?
如果理解不对,您直接忽略就好。另外非常感谢您写的这套书,受益匪浅,十分感谢!
不是什么大的错误,是表述上有问题,“这就是为什么鸢尾花书系列会选择Python作为编成语言的原因”,应该是“这就是为什么...”或者“这就是...的原因”比较通顺。
本课的习题是:从零开始复刻 Bk1_Ch2_01.ipynb
但是在导入包的时候,因为numpy的版本不对
通过网络查询得知:https://blog.csdn.net/weixin_47001721/article/details/110354183
导致不能正常引入plotly.express模块,报错:plotly express requires pandas to be installed.
替换numpy版本为1.19.3,中途遇到的问题,如果没有在jupyterlab的kernal sessions 终止掉,就会导致pip uninstall失败,从而产生一个奇怪的残留包,命名前缀为“~”,
从而导致这样的warning:WARNING: Ignoring invalid distribution -umpy (e:\anaconda\lib\site-packages)
替换numpy版本后,matplotlib的版本又和numpy不兼容,导致matplotlib的导入错误
折中一下,换成numpy==1.21,又会产生一些warning: warnings.warn("loaded more than 1 DLL from .libs:"
3.2的动态图,都无法通过运行展示,应该是plotly.express模块没有正确导入的原因
anaconda的环境管理,python的安装包管理,希望ginger老师可以新增教程,感谢万分!
Book_1_Topic_1.01,第5页
“鸢尾花书”的《可视之美》一 册将
后面就没有文字了
一维数组 → 列向量
如图 2所示,利用 numpy.reshape(a, (1, -1))
,我们可以把一维数组 numpy.arange(-7, 7+1) 转
化为形状为 (15, 1) 的二维数组,也称列向量,即 15 × 1 矩阵。
此处应为 numpy.reshape(a, (-1, 1))
才可以把 shape 转为(15, 1)
如题
page11,变量赋值第一句话似乎有点问题: "大家都已经起初"——“大家都已经清楚”?
辛苦老师下次一并修改~
(我第一次用GitHub,不知为啥图片上传一直出错TAT)
图7中:
“ #指定步长2,取出第0,2,4,6
print(greeting_str[::2])”
因为greeting_str的长度为11,所以这段代码不仅会取出第0,2,4,6,还会取出第8和第10;
Cheers,
94mu.
具体位置:第三段的第一句和第二句表述
【同时,我们可以用 **np.r_[0:3, -1]**构造一个数组,也能提取相同的元素组合。numpy.r_() 是一个用于将切片对象转换为一个沿着第一个轴堆叠的 NumPy 数组的函数。】
图5 arimuth应为azimuth
图15中的代码原意是”使用zip()计算向量内积“,但代码中并没有出现zip函数,应该是这段代码:
”for i in range(len(a)):
dot_product += a[i] * b[i]“
写错了。
Cheers,
94mu.
原为是:
“请大家完成下面3道题目”,
但实际只有两道题目
Cheers,
94mu.
这一系列书生成的 PDF 似乎不包含 PDF 目录。编译的时候自动生成目录应该是很直接的(如果是 LaTeX 写,应该就是加上 bookmark 宏包。此外我也不清楚是否加上了 hyperref 宏包,没注意到 PDF 中是否有超链接)。
当然软件编译的 PDF 如果没有经过特殊混淆,自动生成 PDF 目录也不麻烦,例如用 pdf.tocgen,只是如果在编译期能自动生成,读者就没必要事后处理了。
plt.scatter(np.arange(n), a_array)
# 添加标题和坐标轴标签
plt.title('Arithmetic Progression')
plt.xlabel('Index, $n$')
plt.ylabel('Value, $a_n$')
# 显示图形
plt.show()
报错NameError: name 'a_array' is not defined
在 NumPy 中矩阵乘法的运算符为 @。
这句话描述不是很准确, 应该是在Python中可以使用@作为Numpy的矩阵乘法运算符,
因为@ 是Python的运算符功能, 而不是 Numpy的
请问缺少的章节在哪?
姜老师好!
Page 5 13.3生成数列中numpy.linspace的说明里
“例如,numpy.linspace(1, 10, 6) 生成一个等间距数列 [1, 3.25, 5.5, 7.75, 10]。”
应为“例如,numpy.linspace(1, 10, 5) 生成一个等间距数列 [1, 3.25, 5.5, 7.75, 10]。”
最后一段中“这是学 Python 必须避免”为病句,可以改成“这是学 Python 所必须避免的”。
另外,原段落是这样:
大家学 Python 时,一定要吸取英语教育的教训。(很多人)学了十几年的哑巴英语,原因就是只关注词汇、语法、应试,而不是利用语言进行口头、书面交流。这是学 Python 必须避免。(我)建议大家在学 Python 编程的时候,一定要抱着极强的“功利心 ”——立刻开始 coding、debugging!
感觉主语有点杂糅(省略主语的情况下又换了主语),可能换一换表达会更流畅。比如:
在学习 Python 的过程中,大家一定要吸取英语教育的教训。很多人之所以在学了十几年的英语之后仍然不会说,就是因为他们只注重词汇、语法和应试,而没有真正把语言用起来,进行口头和书面交流。前车可鉴,在学习 Python 时,大家不妨“功利”一些,边学边练——在学习中就马上开始编码和调试(coding 和 debugging)。
numpy.linspace(start, stop, num, endpoint)。生成等间距数列,从起始值 start 开始,到结束值
stop 结束,num 指定数列的长度 (元素的个数),默认为 50。endpoint 参数指定是否包含结束
值。例如,numpy.linspace(1, 10, 6) 生成一个等间距数列 [1, 3.25, 5.5, 7.75, 10]。
修改为**[ 1. , 2.8, 4.6, 6.4, 8.2, 10. ] **
具体位置:13.1 什么是Numpy?-- 章节内的第三段。
表述库的话,应该注意大小写,如 NumPy 这样。所以,【此外,如果大家需要处理有标签、多维数组数据的话,推荐使用 xarray。】这里的xarray,修改为Xarray,感觉更好一些。
大佬,缺少第三章和19-28章,是被官方删了吗?
我记得其他书和习惯中,一般都是ctrl/alt/shift/tab/enter这样的顺序。
所以建议把shift+ctrl这种,调整成ctrl+shift,以便与习惯一致,谢谢。
大佬,在book1目录中部分章节缺失,是被屏蔽了吗?
具体位置在 “13.6 随机数” 小标题下第一段
原文:
# 计算向量内积
# 定义向量a和b
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 0]
# 初始化内积为0
dot_product = 0
# 使用for循环计算内积
for i in range(len(a)):
dot_product += a[i] * b[i]
# 打印内积
print("向量内积为:", dot_product)
我猜你想说:
v1 = [1, 2, 3, 4, 5]
v2 = [6, 7, 8, 9, 0]
dp = 0
for c1, c2 in zip(v1, v2):
dp += (c1 * c2)
print(dp)
老师好!
问题:1.2和1.3的序号顺序反了
谢谢老师的教程~
您给的答案是:
while True:
try:
num = int(input("请输入一个数字:"))
break
except ValueError:
print("输入有误,请重新输入!")
print("输入的数字是:", num)
但是如果输入的数字是小数,则获得的是小数的字符串,如'3.14',但直接用int()也会产生ValueError,无法转化为小数,因此这个答案的bug是无法转化小数为整数
我的答案是:
def f():
a=input("please input a number:")
try:
b=float(a)
c=int(b)
print(c)
except:
f()
f()
用了函数的方法来实现满足条件
您给的答案是:
prime_list = []
for num in range(2, 101):
for i in range(2, num):
if num % i == 0:
break
else:
prime_list.append(num)
print(prime_list)
这里面出现了for else的组合,但是对应电子书章节没有介绍这个逻辑
通过查阅,知道如果for循环没有被break强制退出,就会执行else,否则不会执行
此处参考了网络解答:https://blog.csdn.net/weixin_48728769/article/details/123796020
此处,除了ginger老师的方法,我想到可以用对2取余来乘以原来的数,如果是奇数则余数为1,否则为0,用来选择此数是否用来求和,代码如下:
# 请用至少两种不同办法计算 1-100 中奇数之和
result=0
i=0
while i<=100:
result+=(i % 2)*i
i+=1
print(result)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.