1. numpy的安装和简介

python科学计算:
科学计算是进行数据分析、数据挖掘与人工智能的基础。
科学计算主要需要完成的任务是:代数方程、矩阵运算、微积分、统计学、微分方程、傅里叶变换等;
python语言本身并不具有科学计算的功能;但是,numpy和scipy等工具的发展让我们能够完成这些算法,并且提供了更多的高级功能。
安装科学计算基础包numpy

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy

numpy程序包的介绍
numpy是python科学计算的基础程序包,它提供了多维数组和基本的数学计算功能,比如线性代数等。
numpy中有两种基本对象,即N为数组对象和通用函数对象
numpy和scipy的所有的科学计算都建立在numpy的这两种基本对象上

安装可视化数据分析工具matplotlib

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib--
首先创建一个文件夹

python科学计算包 python科学计算的基本包_科学计算


重命名为1-numpy,文件名不可和numpy这个模块名相同


python科学计算包 python科学计算的基本包_数组_02


然后进入该文件夹下,新创一个python3文件,重命名为numpy,文件的名字可与模块名相同,当然,也可以不要这样命名,比如mynumpy,这样既明了当前文件,绝对不会有冲突


创建文件成功后,进入该文件


python科学计算包 python科学计算的基本包_二维数组_03

导入numpy,查看是否能成功导入

python科学计算包 python科学计算的基本包_数组_04

numpy

一、N维数组对象
  1. 数组的创建
  2. 数组的属性
  3. 数组的索引与切片
  4. 数组的变形与转换
  5. 数组的级联
  6. 数组切分
  7. 副本
  8. 聚合
  9. 矩阵与矩阵运算
  10. 数组排序
二、通用函数对象

2. N维数组对象

数组是numpy里的基本数据结构

2.1 数组的创建

2.1.1 使用np.array()函数由list来创建

python科学计算包 python科学计算的基本包_数组_05


信息世界中的客观信息(如:图片、音频等)也可以通过相关的python工具转化成数组

python科学计算包 python科学计算的基本包_数组_06

将一张图片转为数组

python科学计算包 python科学计算的基本包_数组_07


这是一个三维数组(现在的彩色图片基本上都是三维数组)

python科学计算包 python科学计算的基本包_python科学计算包_08


查看一下这个图片的属性


python科学计算包 python科学计算的基本包_二维数组_09


【注意】

  1. 彩色图片,大部分都是三通道(即每个像素的颜色是由rgb三原色合成的),所有当彩色图片转化成数组时,是一个三维数组,三个维度分别代表像素行数、列数和rgb通道值
  2. 图片的像素rgb通道值有两种数据类型即uint8(无符号的短整型)或者0-1之间浮点数
    为什么是uint8类型呢?因为rgb是0~255,也就是2的0次方 -1 到 2的8次方-1
    这是一个坐标系,900行,1440列

扩展 用np.array的方法创建一个12个像素的图片,并显示
提示: 3行4列3通道

boy = np.array([[[0.1,0.2,0.3],[0.2,0.4,0.8],[0.12,0.34,0.78],[0.23,0.34,0.67]],
                [[0.65,0.12,0.78],[0.9,0.8,0.5],[0.6,0.5,0.2],[0.22,0.33,0.44]],
                [[0.23,0.24,0.25],[0.67,0.98,0.67],[0.2,0.4,0.5],[0.7,0.3,0.8]]])
boy
plt.imshow(boy,cmap="gray")
plt.show()

python科学计算包 python科学计算的基本包_python科学计算包_10

再扩展一下,黑白的图片怎么弄,黑白图片是二维数组
这里的小数是灰度比例,不是rgb值

img = np.array([[0.9,0.8,0.7],[0.6,0.6,0.2],[0.3,0.4,0.7]])
plt.imshow(img,cmap="gray")
plt.show()

python科学计算包 python科学计算的基本包_科学计算_11

2.1.2 使用np的通用函数来创建

2.1.2.1 np.ones(shape,dtype=None)

python科学计算包 python科学计算的基本包_二维数组_12

2.1.2.2 np.zeros(shape)

python科学计算包 python科学计算的基本包_二维数组_13

2.1.2.3 np.full(shape,fill_value)

python科学计算包 python科学计算的基本包_数组_14

2.1.2.4 np.eye()

python科学计算包 python科学计算的基本包_数组_15

2.1.2.5 np.linespace(start,stop,num=50)

python科学计算包 python科学计算的基本包_数组_16

2.1.2.6 np.logspace(start,stop,num=50)

1.e+00 是1x10^0 =1
1.e+01 是1x10^1 =10
1.e+02 是1x10^2 =100
lg(1) = 0 lg10 = 1 lg100 = 2
0~10 有11个数,切11次, 第一个数是0,也就是 lg(1) ,指数是1;第2个数是1,也就是 lg(10) ,指数是10;
第3个数是2,也就是 lg(100) ,指数是100;

python科学计算包 python科学计算的基本包_python科学计算包_17

2.1.2.7 np.arange([start],stop,(step))

(3,9,2)从第4个开始取,步长为2,取到第10个
前闭后开,第10个取不到,截至第9个

python科学计算包 python科学计算的基本包_python科学计算包_18

2.1.2.8 np.random.randint(low,height=None,size=None)

前闭后开
取9~20之间的随机整数,按2x3的格式的二维数组取

python科学计算包 python科学计算的基本包_数组_19

2.1.2.9 np.random.randn(d0,d1,d2,…,dn)

python科学计算包 python科学计算的基本包_python科学计算包_20

2.1.2.10 np.random.normal(loc=0,scale=1,size=None)

以175为对称轴,数据往175集中,标准差为20,数据在基本155~195左右波动,也有少数在这个范围外,数据都靠近于175

python科学计算包 python科学计算的基本包_科学计算_21

2.1.2.11 np.random.random(size=None)

python科学计算包 python科学计算的基本包_数组_22

2.2 数组的属性

python科学计算包 python科学计算的基本包_数组_05

2.2.1 ndim属性,数组的维度

nd.ndim = 1 nd是一维数组
nd2.ndim = 2 nd2是二维数组

python科学计算包 python科学计算的基本包_科学计算_24

2.2.2 size属性,数组数据量

nd中有3个元素
nd2中有6个元素
数据量是不管多少维度,加起来是多少个元素

python科学计算包 python科学计算的基本包_python科学计算包_25

2.2.3 shape属性,形状

nd是一维数组 第0个维度有3个元素
nd2是二维数组 第0个维度是2行(2个列表),第1个维度是列表里的3个元素,所以是(2,3)

python科学计算包 python科学计算的基本包_二维数组_26

2.2.4 dtype属性,元素类型

nd中 data = [False,123,19.5]这里有布尔型,整型,浮点型
nd = np.array(data) array([ 0. , 123. , 19.5]) 都转成了浮点型

python科学计算包 python科学计算的基本包_数组_27


如果这时候再往data中加类型,加入"qwer",字符串型,看一下列表,没什么变化,但是再数组里,都变成了字符串类型 dype=’<U32’


python科学计算包 python科学计算的基本包_二维数组_28

【注意】1、数组中的所有的元素的类型都要保持一致 2、如果我们用列表来创建数组,列表中的元素类型不一致的时候,首先系统会对元素的类型进行统一化(统一化的优先级:object>str>float>int>bool)

比如,这个类型是对象


python科学计算包 python科学计算的基本包_python科学计算包_29


可能会有疑问,为什么这个不是二维数组,而是对象


举个列子,这是一个二维数组


python科学计算包 python科学计算的基本包_数组_30


现在修改一下,把9去掉,这里最后的列表中只有两个元素,然后,这个就成了对象类型,而且是一维数组,不是二维


python科学计算包 python科学计算的基本包_python科学计算包_31

【扩展】如果用多维list来创建多维数组的时候,要求每个维度的子元素内部的size保持一致,否则,系统就会认为这些子元素是多个对象数据,就会把他们归到同一个维度中