-
import numpy as np
import pandas as pd
import matplotlib.pyplot as pltplt.rcParams[‘font.sans-serif’] = ‘Heiti TC’
plt.rcParams[‘axes.unicode_minus’] = False%config InlieBackend.figure_fprmat = ‘svg’
NumPy入门
-
NumPy是Numerical python的缩写,它的核心是ndarray的数据类型,可以用来描述多维数组
- 数组:保存同质的元素
- 创建数组对象
- 创建一维数组对象(方法一)
# 创建一维数组对象(方法一)
nums = [1, 2, 3, 4, 155]
array1 = np.array(nums, dtype='u8')
array1
# array([ 1, 2, 3, 4, 155], dtype=uint64)
type(array1)
# numpy.ndarray
# 数组的size属性 -- 元素的个数
array1.size
# 5
# 数组的dtype属性 -- 元素的数据类型
array1.dtype
# dtype('uint64')
# 数组的shape属性 -- 数组的形状
array1.shape
# (5,)
# 数组的ndim属性 -- 数组的维度(ndimension)
array1.ndim
# 1
# 数组的itemsize属性 -- 每个元素占用的内存空间的大小(字节)
array1.itemsize
# 8
# 数组的nbytes属性 -- 整个数组占用的内存空间的大小(字节)
array1.nbytes
# 40
# 将数组还原成Python中的列表
array1.tolist
array1
# array([ 1, 2, 3, 4, 155], dtype=uint64)
- 创建一维数组对象(方法二)
# 创建一维数组对象(方法二)
array2 = np.arange(2, 100, 2)
array2
"""
array([ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34,
36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68,
70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98])
"""
- 创建一维数组对象(方法三)
# 创建一维数组对象(方法三)
array3 = np.linspace(-5, 5, 100, endpoint=False)
array3
"""
array([-5. , -4.9, -4.8, -4.7, -4.6, -4.5, -4.4, -4.3, -4.2, -4.1, -4. ,
-3.9, -3.8, -3.7, -3.6, -3.5, -3.4, -3.3, -3.2, -3.1, -3. , -2.9,
-2.8, -2.7, -2.6, -2.5, -2.4, -2.3, -2.2, -2.1, -2. , -1.9, -1.8,
-1.7, -1.6, -1.5, -1.4, -1.3, -1.2, -1.1, -1. , -0.9, -0.8, -0.7,
-0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0. , 0.1, 0.2, 0.3, 0.4,
0.5, 0.6, 0.7, 0.8, 0.9, 1. , 1.1, 1.2, 1.3, 1.4, 1.5,
1.6, 1.7, 1.8, 1.9, 2. , 2.1, 2.2, 2.3, 2.4, 2.5, 2.6,
2.7, 2.8, 2.9, 3. , 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7,
3.8, 3.9, 4. , 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8,
4.9])
"""
- 创建一维数组对象(方法四)
array4 = np.random.randint(60, 101, 15)
array4
# array([73, 95, 60, 85, 91, 64, 77, 74, 79, 90, 96, 83, 94, 71, 78])
- 创建二维数组对象
nums = [[1,2,3], [4,5,6], [7,8,9]]
array8 = np.array(nums)
array8
"""
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
"""
array8.ndim
# 2
array8.shape
# (3, 3)
# 创建二维数组对象(方法二)
# 将一维数组调形成二维数组
array9 = array4.reshape((5, 3))
array9
"""
array([[73, 95, 60],
[85, 91, 64],
[77, 74, 79],
[90, 96, 83],
[94, 71, 78]])
"""
array9.shape
# (5, 3)
array10 = np.arange(1, 10).reshape((3, 3))
array10
"""
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
"""
# 创建二维数组对象(方法三)
array11 = np.random.randint(60, 101, size=(5, 3))
array11
"""
array([[85, 61, 67],
[89, 66, 70],
[62, 94, 77],
[83, 98, 90],
[82, 79, 82]])
"""
# 创建二维数组对象(方法四)
np.zeros((10, 10)) # 10行10列的0
np.ones((10, 10), dtype=np.int32) # 10行10列的1,dtpye = int32
np.full((10, 10), 5) # 10行10列的5
# 创建二维数组对象(方法五) -- 单位矩阵
np.eye(5, dtype='i8')
"""
array([[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 1, 0],
[0, 0, 0, 0, 1]])
"""
# 读取图片获取对应的三维数组
guido = plt.imread('图片名.jpg')
guido.shape # (750, 500, 3)
guido.ndim # 3
数组的索引和切片
- 普通索引
- 布尔索引
- 花式索引
array12 = np.random.randint(1, 100, 9)
array12
# array([78, 18, 20, 36, 31, 22, 50, 15, 10])
# 普通索引(正向索引和负向索引,注意不要越界)
array12[0