本文整理自《Python数据分析实战》
1. ndarray:NumPy库的心脏
1.1 array()函数
最常用于创建数组的方法是使用array()
函数,参数为单层或嵌套列表:
# 单层列表
>>> np.array([1,2,3])
array([1, 2, 3])
# 嵌套列表
>>> np.array([[1,2,3],[4,5,6]])
array([[1, 2, 3],
[4, 5, 6]])
参数还可以是嵌套元组或元组列表:
# 嵌套元组
>>> np.array(((1,2,3),(4,5,6)))
array([[1, 2, 3],
[4, 5, 6]])
# 元组列表
>>> np.array([(1,2,3),(4,5,6)])
array([[1, 2, 3],
[4, 5, 6]])
此外,参数可以是元组或列表组成的列表:
>>> np.array([(1,2,3),[4,5,6],(7,8,9)])
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
1.2 数据类型
数据类型 | 描述 |
---|---|
bool_ | 以字节存储的布尔值(True 或 False) |
int_ | 默认的整数类型(和 C 的 long 一样,是 int64 或者 int32) |
intc | 和 C 的 int 相同(一般为 int64 或 int32) |
intp | 用于下标的整数(和 C 的 ssize_t 相同,一般为int64 或者 int32) |
int8 | 字节(-128 到 127) |
int16 | 整数(-32768 到 32767) |
int32 | 整数(-2147483648 到 2147483647) |
int64 | 整数(-9223372036854775808 到 9223372036854775807) |
uint8 | 无符号整数(0 到 255) |
uint16 | 无符号整数(0 到 65535) |
uint32 | 无符号整数(0 到 4294967295) |
uint64 | 无符号整数(0 到 18446744073709551615) |
float_ | float64 的简写 |
float16 | 半精度浮点:1位符号,5位指数,10位尾数 |
float32 | 单精度浮点:1位符号,8位指数,23位尾数 |
float64 | 双精度浮点:1位符号,11位指数,52位尾数 |
complex_ | complex128 的简写 |
complex64 | 由两个32位浮点(实部和虚部)组成的复数 |
complex128 | 由两个64位浮点(实部和虚部)组成的复数 |
1.3 dtype选项
array()
函数默认根据列表或元素序列中各元素的数据类型,为ndarray()
对象指定最合适的数据类型。可以用dtype
选项作为函数array()
的参数,明确指定dtype的类型。
比如要定义一个复数数组:
>>> np.array([[1,2,3],[4,5,6]],dtype=complex)
array([[ 1.+0.j, 2.+0.j, 3.+0.j],
[ 4.+0.j, 5.+0.j, 6.+0.j]])
1.4 自带的数组创建方法
NumPy库有几个函数能够生成包含初始值的N维数组:
- zeros()
- ones()
- arange()
- reshape()
- linspace()
- random()
zeros()
函数能够生成由shape参数指定维度信息、元素均为零的数组:
>>> np.zeros((3,3))
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
ones()
函数与zeros()
函数相似,生成元素均为1的数组:
>>> np.ones((3,3))
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
arange()
函数根据参数生成包含一个数值序列的数组:
# 生成从0到9的数组
>>> np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# 生成从4到9的数组
>>> np.arange(4,10)
array([4, 5, 6, 7, 8, 9])
# 按步长为2生成从0到9的数组
>>> np.arange(0,10,2)
array([0, 2, 4, 6, 8])
# 按步长为0.6生成从4到9的数组
>>> np.arange(4,10,0.6)
array([ 4. , 4.6, 5.2, 5.8, 6.4, 7. , 7.6, 8.2, 8.8, 9.4])
reshape()
函数通常结合arange()
函数使用,改变数组的型:
# 将一维数组a变为3*4的数组
>>> a=np.arange(12).reshape((3,4))
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
# 将a变回为一维数组
>>> a.reshape((12,))
array([ 0, 1,