Numpy 的核心是 ndarray 对象,包含了多维数组以及多维数组的操作;

一、ndarray

1、构建ndarray

np.array(object, dtype=None)
   object:转换的数据
   dtype:数据元素的数据类型(int、float等)
import numpy as np
#全部行都能输出
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

numpy整数数组变为double类型 python numpy数组转化为int_数据

2、数据类型

2.1、查看数据类型

numpy整数数组变为double类型 python numpy数组转化为int_数据_02

2.2、基本数据类型

numpy整数数组变为double类型 python numpy数组转化为int_数据类型_03

2.3、向上转换规则

NumPy 数组必须包含同一类型的数据。如果类型不匹配,NumPy 将会向上转换(如果可行)。

确保数据完整性:整数->小数->字符串

numpy整数数组变为double类型 python numpy数组转化为int_python_04

2.4、指定类型创建

字符型转化为数值型,将报错;

numpy整数数组变为double类型 python numpy数组转化为int_numpy_05

2.5、类型转换

  • 第一种方式: ndarray.astype("数据类型名")
  • 第二种方式: ndarray.astype(np.数据类型名)

numpy整数数组变为double类型 python numpy数组转化为int_数据_06

 3、Numpy 的矢量化(向量化)功能

numpy整数数组变为double类型 python numpy数组转化为int_数组_07

二、常用数组

1、全0数组

np.zeros(shape,dtype)/np.zeros_like(a)

numpy整数数组变为double类型 python numpy数组转化为int_数组_08

2、全1数组

np.ones(shape, dtype)/np.ones_like(a)

3、全n数组

np.full(shape, full_value)/np.full_like(a, full_value))

numpy整数数组变为double类型 python numpy数组转化为int_数组_09

4、单位数组

np.eye(n,m,k)

n行数,m列数,k偏移量

返回一个二维数组,其中对角线为1,零点为零的二维数组

numpy整数数组变为double类型 python numpy数组转化为int_数据_10

5、空值和无群大

np.nan、np.inf 都是浮点类型;

数组中如何有一个数据是空值,那么所有的数据都只能是浮点型;

numpy整数数组变为double类型 python numpy数组转化为int_numpy_11

6、随机数组

6.1、随机整数数组

numpy整数数组变为double类型 python numpy数组转化为int_数据_12

6.2、随机小数数组

返回在区间[0,1)范围中的随机浮点数

 

numpy整数数组变为double类型 python numpy数组转化为int_数据类型_13

6.3、正态分布

a、标准正态分布:

numpy整数数组变为double类型 python numpy数组转化为int_python_14

b、正态分布: 

  • np.random.normal(loc,scale,size)
  • loc为均值,scale为标准差,size为数组形状
  • 如果平均值和标准差为0和1,或者不写这两个参数,就等同于np.random.randn()

numpy整数数组变为double类型 python numpy数组转化为int_数据_15

7、随机种子

np.random.seed(Num)可以设置一组种子值,确保每次程序执行都可以生成同样的随机数组。

8、线性序列

8.1、np.arange()

创建一个线性序列数组,给定间隔内返回均匀间隔的值,可以设置开始位置,终止位置和步长。

numpy整数数组变为double类型 python numpy数组转化为int_数据类型_16

8.2、np.linspace() 

创建一个线性序列数组,给定间隔内返回均匀间隔的值,设置开始位置和终止位置以及产生数量。

numpy整数数组变为double类型 python numpy数组转化为int_数据_17

三、nddaray常用属性

  • 查看数组形状:a.shape
  • 查看维度:a.nidm
  • 查看数组元素个数:a.size
  • 查看元素字节大小:a.itemsize

四、数组的切片和索引

4.1、多维数组的索引

numpy整数数组变为double类型 python numpy数组转化为int_numpy_18

 4.2、修改某一个元素的值

ndarry的形状无法修改,个数固定了,所以长度必须对应;
列表也可以通过索引来修改数据,但是长度不用固定;

numpy整数数组变为double类型 python numpy数组转化为int_数据_19

五、深拷贝&浅拷贝

1、浅拷贝

浅拷贝:指向同一块内存,修改其中任何一个数组,都修改了原内存;

1.1、直接赋值

numpy整数数组变为double类型 python numpy数组转化为int_python_20

1.2、切片情况

numpy整数数组变为double类型 python numpy数组转化为int_数组_21

 1.3、使用view创建一个视图(浅复制)

numpy整数数组变为double类型 python numpy数组转化为int_python_22

2、深拷贝

深拷贝:创建新的内存,与原内存可单独修改;

方法:a.copy()

六、数组的操作

1、数组的变形

1.1、reshape 

元素个数不变,返回新数组,不会对原数组做改变;

numpy整数数组变为double类型 python numpy数组转化为int_numpy_23

1.2、resize

元素个数可变,在原数组基础上做改变;

numpy整数数组变为double类型 python numpy数组转化为int_数组_24

1.3、ravel

返回新数组;

numpy整数数组变为double类型 python numpy数组转化为int_数组_25

1.4、转置

返回新数组

numpy整数数组变为double类型 python numpy数组转化为int_numpy_26

2、数组的拼接

  • concatenate((a1, a2, ...), axis)
  • axis指定沿着哪个轴进行拼接,默认0轴
  • 0轴拼接保列数相同(行拼接),1轴拼接保行数相同(列拼接)

numpy整数数组变为double类型 python numpy数组转化为int_python_27

3、数组的拆分

np.split(arr,indices_or_sections,axis)

  • indices_or_sections:int或1-D数组。
  • 如果indices_or_sections是一个整数N,则数组将被分割沿着'轴'进入N个相等的数组。
  • 如果indices_or_sections是排序整数的1-D数组,则为条目指示数组被分割的“轴”的位置。
  • 如果索引超过沿“轴”的数组维度,相应地返回一个空的子数组。

numpy整数数组变为double类型 python numpy数组转化为int_数据_28

 

numpy整数数组变为double类型 python numpy数组转化为int_数组_29

七、广播机制

  • 规则1:如果两个数组形状中,只有其中一个维度相同,另一个维度不一致,但是其中一个数组有维度为1,则可以补齐
  • 规则2:如果两个数组的形状在任何一个维度都不匹配,但两个数组都有其中以维度为1,则数组的形状会沿着维度为1的维度扩展,以匹配另外一个数组形状。
  • 规则3:如果两个数组的形状在任何一个维度上都不匹配,并且没有任何一个维度等于1,会广播错误。

numpy整数数组变为double类型 python numpy数组转化为int_python_30

八、numpy的运算

Numpy 中数组上的算术运算符使用元素级别。最后的结果使用新的一个数组来返回。

1、基本运算

numpy整数数组变为double类型 python numpy数组转化为int_数据类型_31

 如果需要修改现有数组,而不是创建新数组,应该使用等号进行赋值。

 

numpy整数数组变为double类型 python numpy数组转化为int_数据类型_32

2、常用函数 

numpy整数数组变为double类型 python numpy数组转化为int_numpy_33

3、规约函数

numpy整数数组变为double类型 python numpy数组转化为int_数据_34

 

numpy整数数组变为double类型 python numpy数组转化为int_数组_35

4、Numpy的快速排序

4.1、np.sort()

numpy整数数组变为double类型 python numpy数组转化为int_numpy_36

4.2、np.argsort()

返回将对此数组进行排序的索引。

numpy整数数组变为double类型 python numpy数组转化为int_数据类型_37