系统学习建议看这里,我有一部分也是从这查的
NumPy(Numerical Python)
它是 Python 语言的一个扩展程序库。是一个运行速度非常快的数学库.
主要用于数组计算
包含:
一个强大的N维数组对象 ndarray
广播功能函数
整合 C/C++/Fortran 代码的工具
线性代数、傅里叶变换、随机数生成等功能
Numpy包安装
没有下载numpy包的建议下载一个anaconda,里面切换版本方便
点击这里前往下载anaconda
当然也可以直接pip 下载
pip install numpy
已经有conda的可以用conda下载
conda install numpy
注意,因为服务器是国外的,如果感觉下载慢可以看这里!!!!
# 注意,使用pip时最好指定安装源, 参考镜像地址,
阿里云:https://mirrors.aliyun.com/pypi/simple/
豆瓣:https://pypi.douban.com/simple/
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
# 完整格式如下
pip install 包名 -i https://mirrors.aliyun.com/pypi/simple/ #通过阿里云镜像安装
ndarray 对象是用于存放同类型元素的多维数组。
ndarray 中的每个元素在内存中都有相同存储大小的区域。
ndarray 内部由以下内容组成:
一个指向数据(内存或内存映射文件中的一块数据)的指针。
数据类型或 dtype,描述在数组中的固定大小值的格子。
一个表示数组形状(shape)的元组,表示各维度大小的元组。
一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数
看不懂建议复制上面的文字询问AI
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
object:可遍历对象
dtype:数据类型copy:是否复制(是否不用同一个内存地址):注意object如果是list则不生效因为list实际存储的是对象的地址
ndmin:强制指定生成的最小维度
order:略
subok:略
NumPyNdarray对象的属性
优先介绍这5个:建议运行一下
# 导包
import numpy as np
# 创建列表
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 转换为numPy 的 Ndarray对象
n1 = np.array(my_list)
print(my_list, type(my_list))
print(n1.ndim) # 维度
print(n1.shape) # 形状[重点]
print(n1.dtype) # 数据类型
print(n1.size) # 元素个数
print(n1.itemsize) # 每个元素的字节数
print(n1.nbytes) # 总字节数
详细解释:
ndim:秩,即数组的维度数量或轴的数量。
shape:形状,描述数组为几行几列
dtype:数组中的数据类型
size:大小,描述数组存储的元素个数
itemsize:每个元素的字节数
nbtes:size*itemsize=netes 总字节数
1.直接从列表转过来
下面就是因该2维数组
a1 = np.array([[1, 2, 3], [4, 5, 6]])
print(a1, a1.shape)
2.创建全为0或1的数组
两行三列,两层(理解为多了厚度)
# np.zeros创建一个全为0的数组
a2 = np.zeros((2, 2, 3))
print(a2, a2.shape)
print('-----------------------------------------')
# np.ones创建一个全为1的数组
a3 = np.ones((2, 2, 3))
print(a3, a3.shape)
结果就不写了,感兴趣的可以自己复制运行,也能帮助理解
# 演示等比数组和等差数组的创建和对比
import numpy as np
# 先演示等差数组创建
a1 = np.linspace(1, 10) # 默认50个,默认包含结束值
print(a1, a1.shape)
print('-------------------------------------------------------')
a1 = np.linspace(1, 10, 10) # 修改为10个,,默认包含结束值
print(a1, a1.shape)
print('-------------------------------------------------------')
a1 = np.linspace(1, 10, 10, endpoint=False) # 修改维10个,修改不包含结束值
print(a1, a1.shape)
print('=============================================================================')
# 演示等比数组创建
a2 = np.logspace(0, 0) # 默认50个,默认基础值是10
print(a2, a2.shape)
print('-------------------------------------------------------')
a2 = np.logspace(0, 3, 5) # 修改为5个,默认基础值是10
print(a2, a2.shape)
print('-------------------------------------------------------')
a2 = np.logspace(0, 3, 5, base=2) # 修改为5个,默认基础值是10
print(a2, a2.shape)
ceil(ndarray对象: a):向上取整
floor(a):向下取整
rint(a):四舍五入
isnan(a):是否不是数字
multiply(a,a):相乘
divide(a,a):相除
abs(a):绝对值
where:类似三元表达式 true 则取前面的数,false则取后面的数
# 演示数组的基本函数
# 导包
import numpy as np
print('---------------------------------------------------------------------')
# 创建一个随机浮点数数组
a1 = np.random.randn(2, 3)
print(a1)
print('------------------')
# 演示基本函数
print(np.ceil(a1)) # 向上取整
print('------------------')
print(np.floor(a1)) # 向下取整
print('------------------')
print(np.rint(a1)) # 四舍五入
print('------------------')
print(np.isnan(a1)) # 判断是否不是数字
print('--------------------------------------------------------------------')
# 再创建一个随机整数数组
a2 = np.random.randint(1, 5, size=(2, 3))
print(a2)
print('------------------')
print(np.multiply(a2, a2)) # 乘法
print('------------------')
print(np.divide(a2, a2)) # 除法
print('------------------')
print(np.abs(a2)) # 绝对值
print('------------------')
print(np.where(a2 % 2 == 0, 1, 0)) # 条件判断