详解Numpy(基于jupyter notebook)

详解Numpy(基于jupyter notebook)

1.创建数组

python 复制代码
#引入numpy包,以后np就代表numpy
import numpy as np
python 复制代码
a=np.arange(10,30,2)#10为起点,30为终点,2为步长 array数据类型:数组
a
array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28])
python 复制代码
a3=[1,2,3] #数据类型:列表
a3
[1, 2, 3]
python 复制代码
type(a3)#type()判断数据类型
list
python 复制代码
#方法1:
a = np.array([1,2,3]) #推荐
a
array([1, 2, 3])
python 复制代码
#建立多维数组
a1 = np.array([[1,2,3],[7,8,9]])  
a1
array([[1, 2, 3],
       [7, 8, 9]])
python 复制代码
#方法2:利用函数,常用的函数有zeros、ones和empty用法都类似,以zeros为例加以说明
a=np.zeros(10)#生成10个元素,元素全为0   ones()生成的元素全为1
a
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
python 复制代码
#方法2:利用函数,常用的函数有zeros、ones和empty用法都类似,以zeros为例加以说明
a=np.ones(10)#生成10个元素,元素全为0   ones()生成的元素全为1
a
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
python 复制代码
a=np.empty(10)#有可能是全0,也可能是随机数
a
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
python 复制代码
#方法2:arange函数,重要
a=np.arange(10)#产生10个从0开始的自然数,arange()自然数组
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
python 复制代码
a=np.linspace(10,30,12)#10为起始点,30为终止点,生成12个数,默认个数为50,随机产生
a
array([10.        , 11.81818182, 13.63636364, 15.45454545, 17.27272727,
       19.09090909, 20.90909091, 22.72727273, 24.54545455, 26.36363636,
       28.18181818, 30.        ])
python 复制代码
a.ndim #判断a的维数
1
python 复制代码
a.shape #判断a的形状,为12行(12个数)
(12,)
python 复制代码
#改变形状reshape
#一般先生成一个一维的,然后reshape为二维的,需要注意的是数据的一致性,10=2*5
a=np.arange(10).reshape(2,5)
a
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
python 复制代码
a.shape
(2, 5)

2.数据类型

python 复制代码
a.dtype #判断a中元素类型,区别于type
dtype('int64')
python 复制代码
a1=np.array([True,False,False,True])#bool型数据:元素只有True或者False
a1.dtype
dtype('bool')

数据类型及描述

bool: 存储为一个字节的布尔值(真或假)

int: 默认整数,相当于 C 的long,通常为int32或int64

intc:相当于 C 的int,通常为int32或int64

intp:用于索引的整数,相当于 C 的size_t,通常为int32或int64

int8字节(-128 ~ 127)

int16 :16 位整数(-32768 ~ 32767)

int32: 32 位整数(-2147483648 ~ 2147483647)

int64 64 位整数(-9223372036854775808 ~ 9223372036854775807)

uint8: 8 位无符号整数(0 ~ 255)

uint16: 16 位无符号整数(0 ~ 65535)

uint32: 32 位无符号整数(0 ~ 4294967295)

uint64: 64 位无符号整数(0 ~ 18446744073709551615)

float_:float64的简写

float16半精度浮点:符号位,5 位指数,10 位尾数

float32单精度浮点:符号位,8 位指数,23 位尾数

float64双精度浮点:符号位,11 位指数,52 位尾数

complex_:complex128的简写

complex64:复数,由两个 32 位浮点表示(实部和虚部)

complex128:复数,由两个 64 位浮点表示(实部和虚部)

NumPy 数字类型是dtype(数据类型)对象的实例,每个对象具有唯一的特征。 这些类型可以是np.bool_,np.float32等。

python 复制代码
a3 = np.array([1.2, 3.23, 7.88])
a3.dtype
dtype('float64')
python 复制代码
a3.round(1) #a3元素保留位小数,四舍五入
array([1.2, 3.2, 7.9])
python 复制代码
a4 = a3.astype(np.int32)#a3取整(int32)(去掉小数)
a4
array([1, 3, 7], dtype=int32)
python 复制代码
a = np.array([True,True,False,True,False])
a
array([ True,  True, False,  True, False])
python 复制代码
a.dtype
dtype('bool')
python 复制代码
a5 = a.astype(np.float32) #a取单精度浮点数
a5
array([1., 1., 0., 1., 0.], dtype=float32)
python 复制代码
a5.dtype
dtype('float32')

3.数组切片和索引

python 复制代码
a =np.arange(10)
#前包括后不包括(从第0位开始),观察运行结果,注意切出来的仅仅是原来的一个视图,并没有改变原数据
#思考一下为啥这样,有什么益处:取出部分数据进行分析,并不改表原来的总数据
a[5:]
array([5, 6, 7, 8, 9])
python 复制代码
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
python 复制代码
a[5:8]#第五个到第八个元素
array([5, 6, 7])
python 复制代码
#从0开始
a[:5]#从0开始的前5个元素,默认步长为1 
array([0, 1, 2, 3, 4])
python 复制代码
#从0开始,到5,步长为2
a[:5:2]
array([0, 2, 4])
python 复制代码
a[::2]#对所有元素,从0开始,步长为2
array([0, 2, 4, 6, 8])
python 复制代码
a[-1]#取最后一个元素
9
python 复制代码
a[:-1]# 除了最后一个取全部
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
python 复制代码
a[::-1]# 取从后向前(相反)的元素
array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
python 复制代码
a[::-3]#从后向前取值,步长为3
array([9, 6, 3, 0])
python 复制代码
a[2::-1]# 取从下标为2的元素翻转读取
array([2, 1, 0])
python 复制代码
a = np.array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]])
b = a[::-1, :]
b
array([[5, 6, 7, 8, 9],
       [0, 1, 2, 3, 4]])

4.Numpy的广播与数组操作

python 复制代码
a=np.arange(10).reshape(2,5)
a
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
python 复制代码
#当array与标量运算时,所有的元素都与该标量进行运算
a+10
array([[10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])
python 复制代码
#相同形状的数组进行运算,则对应元素之间进行运算
a+a
array([[ 0,  2,  4,  6,  8],
       [10, 12, 14, 16, 18]])
python 复制代码
a1=np.arange(10,15)
a1
array([10, 11, 12, 13, 14])
python 复制代码
a+a1#每一行均与a1相加
array([[10, 12, 14, 16, 18],
       [15, 17, 19, 21, 23]])

5.数组合并与通用函数

python 复制代码
#合并 np.concatenate,注意多维数组的输入方式
a = np.array([[1,2],[3,4]])
a
array([[1, 2],
       [3, 4]])
python 复制代码
b = np.array([[5,6],[7,8]])
b
array([[5, 6],
       [7, 8]])
python 复制代码
np.concatenate([a,b])#默认是行叠加,沿行合并,或者说沿0轴合并
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])
python 复制代码
np.concatenate([a,b],axis = 1)#对比 axis=1横轴(x轴),axis=0纵轴(y轴)默认axis=0
array([[1, 2, 5, 6],
       [3, 4, 7, 8]])
python 复制代码
a = np.array([1,2,3,4])
b = np.array([5,6,7,8])
np.stack([a,b])
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
python 复制代码
np.stack([a,b], axis = 1)
array([[1, 5],
       [2, 6],
       [3, 7],
       [4, 8]])
python 复制代码
a = np.array([1,2,1,1,3,4,3,5,6,1])
np.unique(a)# 去重 去除重复元素:unique
array([1, 2, 3, 4, 5, 6])

6.其他通用函数

python 复制代码
np.sqrt(a)
np.sin(a)
np.cos(a)
np.add(a,b)
np.sub(a,b)
np.mod(a,b)#等价于 a%b 求模
a//b #求余
a == b #比较运算
a>b
~(a>b)
#均值
a.mean()
#等价于
np.mean(a)
#求和
a.sum()
#正态分布
np.random.normal( size =(3,5))#normal正态分布
相关推荐
Long_poem1 天前
【自学笔记】Numpy基础知识点总览-持续更新
笔记·numpy
WenGyyyL1 天前
使用OpenCV和MediaPipe库——驼背检测(姿态监控)
人工智能·python·opencv·算法·计算机视觉·numpy
WiKiLeaks_successor2 天前
R的安装以及jupyter配置windows
windows·jupyter·r语言
Wis4e3 天前
基于PyTorch的深度学习2——Numpy与Tensor
pytorch·深度学习·numpy
終不似少年遊*3 天前
综合使用pandas、numpy、matplotlib、seaborn库做数据分析、挖掘、可视化项目
开发语言·python·机器学习·numpy·pandas·matplotlib·seaborn
儒雅芝士5 天前
修改Jupyter默认文件路径
ide·python·jupyter
code 旭5 天前
矩阵逆 逆矩阵
人工智能·python·线性代数·矩阵·numpy
dundunmm5 天前
【数据挖掘]Ndarray数组的创建
python·机器学习·数据挖掘·numpy
waicsdn_haha8 天前
Postman 11.34 最新版安装与API测试入门教程(Windows平台)
java·linux·开发语言·python·jupyter·fpga开发·lua
wcyd8 天前
jupyter汉化、修改默认路径详细讲解
ide·python·jupyter