读书笔记 numpy入门 第1章 python的特殊

https://github.com/jakevdp/PythonDataScienceHandbook

Numpy入门

Numerical Python,提供了高效存储和操作密集数据缓存的接口。

导入Numpy

1
import numpy as np

理解Python中的数据类型

学习数据科学,我们要理解数据是如何被储存和操作的。

python易用性-动态输入

静态类型的语言(如 C 或 Java)往往需要每一个变量都明确地声明,

而动态类型的语言(例如 Python)可以跳过这个特殊规定。

Python整型不仅仅是一个整型

Python 3.4 中的一个整型实际上包括 4 个部分。

  • ob_refcnt 是一个引用计数,它帮助 Python 默默地处理内存的分配和回收。
  • ob_type 将变量的类型编码。
  • ob_size 指定接下来的数据成员的大小。
  • ob_digit 包含我们希望 Python 变量表示的实际整型值。

Python列表不仅仅是一个列表

整型值列表

1
2
3
4
5
6
7
8
9
10
11
12
L = list (range(10))

print(L)

# output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

type(L)

# output:list

type(L[0])
# output:int

字符串列表

1
2
3
4
5
6
7
8
9
L2 = [str(c) for c in L]

print(L2)

# output: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

type(L2[0])

# output: str

异构列表

1
2
3
4
L3 = [True, "2", 3.0, 4]
[type(item) for item in L3]

# output: [bool, str, float, int]

Python中的固定类型数组

array模块

创建统一类型的密集数组

1
2
3
4
5
6
7
8
import array
L = list(range(10))
print(L)
A = array.array('i', L)
A

# output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# array('i', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

从Python列表创建数组

NumPy 要求数组必须包含同一类型的数据。

1
2
3
4
5
6
# 导入Numpy
import numpy as np
# 创建数组
np.array([1, 4, 2, 5, 3])

#output: array([1, 4, 2, 5, 3])

如果数据类型不匹配,Numpy向上转换:

1
2
3
4
5
import numpy as np
np.array([3.14, 4, 2, 3])

# 整型int转换为浮点型float
# output: array([3.14, 4. , 2. , 3. ])

也可以用dtype关键词去设置数组的数据类型:

1
2
3
4
import numpy as np
np.array([1, 2, 3, 4], dtype='float32')

# output: array([1., 2., 3., 4.], dtype=float32)

多维数组:

1
2
3
4
5
6
7
8
# 嵌套列表构成的多维数组
import numpy as np
np.array([range(i, i + 3) for i in [2, 4, 6]])

#output
#array([[2, 3, 4],
# [4, 5, 6],
# [6, 7, 8]])