1. 什么是numpy
快速,方便的科学计算基础库(主要是对数值的计算、多维数组的运算);
2. numpy轴的理解
一维数组: [1,2,3,45] ----0轴
二维数组: [[1,2,3,45], [1,2,3,45]] ----0轴, 1轴(类似于x轴和y轴)
3. 常用操作
3.1 numpy中创建数组(矩阵):
方法1:
a = np.array([1,2,3,4,5])
b = np.array([1,2,3,4,5])
c1 = np.array(range(1,6))
print(a+b)
方法2:
c2 = np.arange(1,6)
print(c1)
print(c2)
3.2 查看数组类名:
type(c)
3.3 查看数据元素类型:
c.dtype
3.4 修改数组的数据类型:
c.astype('float')
c1.astype('bool')
3.5 创建数据时指定数据类型:
np.array([1,2,3,4], dtype=np.float)
3.6 修改浮点数的小数位:
c = np.array([1.234556, 3.45464456, 5.645657567])
np.round(c, 2)
3.7 读取数据:
import numpy as np
fname = "data.txt"
dtype = np.dtype([('gender', '|S1'), ('height', 'f2')])
# fname: 文件的名称, 可以是文件名, 也可以是ugz或者bz2的压缩文件;
# dtype: 数据类型, 可选, 默认是float;
# delimiter: 分隔符字符串, 默认情况是任何的空格,
# skiprows: 跳过前xx行, 一般情况跳过第一行;
# usecols: 读取指定的列, 可以是元组;
# unpack: 如果为True, 对返回的数组对象转置;
data = np.loadtxt(fname=fname, dtype=dtype, skiprows=9, usecols=(1, 3), unpack=True)
print(data)
3.8 数组转置:
将一维数组转换为3行4列的二维数组
data = np.arange(12).reshape((3, 4))
print(data)
转置
data.transpose()
data.swapaxes(1, 0)
data.T
3.8 索引及切片:
取第一行的数据
print(data[0])
取第一列的数据
print(data.T[0])
print(data[:, 1])
获取多行
print(data[:2])
获取多行列
print(data.T[:2])
print(data[:, :2])
获取指定行的前几列;
print(data)
print(data[[0,2], :2])
print(data[:2, [0,2]])
布尔索引(返回一个布尔类型的列表):
data > 10
3.9 数值修改:
1). data中所有大于8的数字都替换为0, 否则替换为1
np.where(data <= 8, 1, 0)
2). 如果data<=8, 替换称8, 如果data>=10, 替换为10
data.clip(8, 10)
3.10 数组拼接:
横向拼接:np.hstack((t1, t2))
水平拼接:np.vstack((t1, t2))
3.10 行列交换:
行交换:t[[0, 3], :] = t[[3, 0], :] (t中的第3行到第0行赋值给t中的第0行至第3行)
列交换:t[[:, [0, 3] = t[:, [3, 0]] (t中的第3列到第0列赋值给t中的第0列至第3列)
3.11 获取最大值和最小值位置:
获取当前数组里面最大值的索引:np.argmax(data)
获取每一列的最大值对应的0轴索引:np.argmax(data, axis=0)
获取每一行的最大值对应的1轴索引:np.argmax(data, axis=1
3.12 创建一个全为0的数组:
np.zeros((3, 3), dtype=np.int)
3.13 创建一个全为1的数组:
np.ones((3, 4))
3.14 创建一个对角线全为1的正方形数组(方阵):
np.eye(3)