欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python for data science学习记录

程序员文章站 2022-03-10 08:44:00
...

可以在线获取python for data science, 章节打开的速度比较慢,可以看一小节的时候,loading另外一个小节。

Chapter 2 Understanding numpy

  1. 动态创建更耗费内存
    在第一小节中介绍到python这种动态编程语言因为允许不用声明而创建变量,所以每一个创建的变量都带有变量的类型、存储地址及大小信息,相比较其他静态语言例如C就会需要更大的计算资源。所以在python中创建的一个变量其实是一个指针,指向了一个数据结构。
  2. 在生产或者线上代码中使用固定类型的数据结构会减少存储代价。因为在实现层面上,list是一个指向了多个指针的结构,而固定类型的数据结构例如numpy类型的array却是一个指针,指向一个连续的数据块。
  3. 在创建多维array的时候,可以使用下面的代码:
np.array([range(i , i+3) for i in [1,2,3]])
  1. 同时如果需要可以通过np.zeros, ones, linspace, random,eye, arrange创建具有固定填充规则的数据结构。
    numpy.array has several useful attributes such as dtype, ndim, shape, size.
  2. array的indexing和slicing并不相同,前者是获取其中的一个element,后者是获得array的一些截片。语法上,都是通过[]实现。在indexing中通过逗号分隔每个维度,例如三维的array x1, x1[1,2,3]是获取一个元素;x1[::, ::, ::]是slicing的语法。在slicing的语法中,x[start:stop:step, start:stop:step]意思指by default start = 0, stop = size of dimension, step =1, 当step = negative number的时候表示acessing是从后往前。start,stop,step是可以不赋值,使用默认值替代。有多少个dimension,就通过ndim-1个逗号分隔想要获取的维度中的index。有一种特殊的情况是需要一行或者一列,这个时候可以使用[:, 0] # 选择第一列,[0, :]选择第一行,同时为了语法上的间接,可以通过[0]来表示[0, :]. 需要注意的是slice操作获取的仅仅是之前array的view,而非copy,这个特性不同于list。
b = a[::]
print(b)
b[0] = 4
print(a, b)

在上面的代码中,b就修改了,而a却保留了原始的值。

x11 = x1[0, 0, ::]
print(x11)
x11 = np.array([0,0,0])
print(x11)
print(x1)

这里x1的值就被x11的value reset所修改了。
6.

相关标签: 编程