NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)).
一个用python实现的科学计算,包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。
NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。
数组:存储的时同一种数据类型;
****主要适用于对数字类型进行运用
numpy的操作
import numpy as np
# 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)
# 数组的类名: numpy.ndarray
print(type(c1))
# 查看数据元素的类型
print(c1.dtype)
# 2. 修改数组的数据类型
print(c1.astype('float'))
print(c1.astype('bool'))
print(c1.astype('?')) # ?是bool类型的代号;
# 创建的时候指定数据类型
print(np.array([1,2,3,4], dtype=np.float))
# 3. 修改浮点数的小数位数
c3 = np.array([1.234556, 3.45464456, 5.645657567])
print(np.round(c3, 2))
numpy读取CSV文件
import numpy as np
fname = "doc/eg6-a-student-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)
import numpy as np
# 将一维数组转换为3行4列的二维数组
data = np.arange(12).reshape((3, 4))
print(data)
# 1).
print(data.transpose())
# 2). 0轴 , 1 轴
print(data.swapaxes(1, 0))
# 3).
print(data.T)
import numpy as np
# 将一维数组转换为3行4列的二维数组
data = np.arange(12).reshape((3, 4))
# print(data)
# 取第一行的数据
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]])
import numpy as np
t1 = np.arange(12).reshape(2, 6)
t2 = np.arange(12).reshape(2, 6)
t3 = np.arange(12).reshape(2, 6)
# 竖直拼接(vertically)
print(np.vstack((t1, t2, t3)))
# 水平拼接(horizontally)
print(np.hstack((t1, t2, t3)))
# *************************************************
# 数组的行列交换
t4 = np.arange(12).reshape(2, 6)
# 行交换(第一行和第二行进行交换)
print("原数据:\n", t4)
t4[[0, 1], :] = t4[[1, 0], :]
print("替换后的数据:\n", t4)
# 列交换(第3列和第5列进行交换)
print("原数据:\n", t4)
t4[:, [2, 4]] = t4[:, [4, 2]]
print("替换后的数据:\n", t4)