Numpy使用手册

注:本文章所有的内容整理都来源于imooc 夏正东老师讲述的《Numpy基础入门》

Numpy

用于存放同类型元素的集合

每个元组在内存中都有想用存储大小的区域
我们可以通过使用array函数来创建一位数组
numpy.array(object)
其中,参数object类型可以是列表或者元组。
数组只能保存相同的数据类型,而列表可以保存任何类型的数据
import numpy as np
a = np.array([1,3,5,7])
print(a)
===>[1,3,5,7]
import numpy as np
a=np.array([1,3,5,7],dtype=np.int64) #指定数据类型
print(a,a.dtype) #查询数据类型

我们可以使用arange()函数创建数值并返回数组对象

numpy.arange(start,stop,step,dtype)
start:开始值,默认值为0,包含开始值
stop:结束值,不包含结束值
step:步长,默认值为1,该值可以为负数
dtype:数组元素类型

我们可以使用linspace()函数创建等差数组

numpy.linspace(start,stop,num,endpoint,retstep,dtype)
num:设置生成的元素个数
endpoint:设置是否包含结束值,False是不包含,True是包含,默认值是True
retstep:设置是否返回步长(即公差),False是不返回默认值是False,True是返回,当值为True时,返回值是二元组,包括数组和步长

我们可以用logspace()函数创建等比数组

numpy.logspace(start,stop,num,endpoint,base,dtype)
start:开始值,值为base**start
stop:结束值,值为base**stop
base:底数

二维数组

我们可以通过使用array函数来创建二维数组

numpy.array(object)
其中,参数object类型可以是列表或者元组。
import numpy as np
a = np.array([[1,2,3],
             [4,5,6],
             [7,8,9]])

print(a) ====>[[1 2 3]
               [4 5 6]
               [7 8 9]]

我们可以使用数组对象的属性T,将数组进行转置

转置前:两行四列
转置后:四行两列
numpy.ones(shape,dtype=None)
shape:数组的形状 可以为列表也可以为元组

根据指定的形状和数据类型生成全为0的数组

numpy.zeros(shape,dtype=None)

根据指定的形状和数据类型生成数组,并用指定的数据进行填充

numpy.full(shape,fill_value,dtype=None)

fill_value:指定填充的数据

创建单位矩阵(即对角线元素为1,其他元素为0的矩阵)

numpy.identity(n,dtype=None)

n:数据形状

数组的访问

array[]

array[][]

array[ , ]

ndarray[ start:end ]

ndarray[ start: end :step ]

ndarray[ 所在0轴切片,所在1轴切片 ]

注意:布尔索引必须与要索引的数组形状相同,否则会引发IndexError错误。
布尔索引返回的新数组是原数组的副本,与原数组不共享相同的数据空间,即新数组的修改不会影响原数组,这是作为的 深层复制

import numpy as py
a1=np.array([1,2,3,4])
b1=np.array([True,False,True,False])
print(a1[b1])========>[1 3]
索引为整数列表

索引为一维整数数组

索引为二维整数数组

注意点:

花式索引返回的新数组与花式索引数组形状相同
花式索引返回的新数组与布尔索引类似,属于深层复制
二维数组上每一个轴的索引数组形状相同
#一维数组的花式索引
import numpy as np
a1=np.array([1,2,3,4,5,6])

b = [1,2,3,4]
print(a1[b])

c = np.array([1,2,3,4])
print(a1[c])

d = np.array([[1,2],
              [3,4]])

print(a1[d])

#二维数组的花式索引
a2 = np.array([[1,2,3],
              [4,5,6],
              [7,8,9]])
m=[1,2]
n=[0,1]
print(a2[m,n])
#或者
print(a2[m][n])

数组的操作

import numpy as np

该函数指沿指定的轴连接多个数组

numpy.concatenate((a1,a2,...),axis)

a1,a2 是要连接的数组。注意,除了指定轴外,其他轴元素个数必须相同。
axis 是沿指定轴的索引,默认为0轴。

a = np.array([[1,2],
              [3,4]])
b = np.array([[1,2]])

ab = np.concatenate((a,b))
#或者
#ab = np.concatenate((a,b),axis=0)  报错
因为0轴上的个数不相同
print(ab)

沿垂直堆叠多个数组,相当于concatenate()函数axis=0的情况

numpy.vstack((a1,a2))

注意,1轴上元素个数相同

沿水平堆叠多个数组,相当于concatenate()函数axis=1的情况

numpy.hstack((a1,a2))

注意,0轴上元素个数相同

该函数指沿指定的轴分割多个数组

numpy.split(ary,indices_or_sections,axis)

ary是要被分割的数组
indices_or_sections 是一个整数或数组,如果是整数就用该数平均分割;如果是数组,则为沿指定轴的切片操作
axis 指轴的分割方向,默认为0轴

该函数指沿垂直方向分割数组,相当于split()函数axis=0情况

numpy.vsplit(ary,indices_or_sections)

该函数指沿水平方向分割数组,相当于split()函数axis=1的情况

numpy.hsplit(ary,indices_or_sections)
import numpy as np
a1 = np.array([1,2,3])
b1 = np.array([4,5,6])
print(a1+b1)

数组与标量或者不同形状的数组进行算数运算的时候,就会发生数组广播

数组与标量进行算数运算,相当于先将标量广播成相同形状的数组,然后再进行算数运算

数组与不同形状的数组进行算数运算时,会发生广播,需遵守以下广播原则

(1)先比较形状,再比较维度,最后比较对应轴长度
(2)如果两个数组维度不相等,会在维度较低数组的形状左侧填充1,直到维度与高纬度数组相等
(3)如果两个数组维度相等时,要么对应轴的长度相同,要么其中一个轴长度为1,则兼容的数组可以广播,长度为1的轴会被扩展

数组的常用函数

该函数返回[0.0,1.0)的随机浮点数,即大于等于0.0,且小于1.0的随机浮点数

numpy.random.rand(d0,d1,...,dn)

d0,d1,…,dn表示数组的形状

该函数返回[low,high)的随机整数,如果high省略,则返回[0,low)的随机整数

numpy.random.randint(low,high,size,dtype)

size表示数组的形状

该函数返回正态分布随机数

numpy.random.normal(loc,scale,size)

loc表示平均值
scale表示标准差

该函数返回标准正态分布随机数,即平均数为0,标准差1的正太分布随机数

numpy.random.randn(d0,d1,...,dn)

按照轴对数组进行排序,即轴排序

numpy.sort(a,axis=-1,kind='quicksort',order=None)

a 表示要排序的数组
axis 表示排序的轴索引,默认是-1,表示最后一个轴
kind 表示排序类型。quicksort:快速排序,为默认值,速度最快;mergrsort:归并排序;heapsort:堆排序
order 表示排序字段

按照轴对数组进行排序索引,即轴排序索引

numpy.argsort(a,axis=-1,kind='quicksort',order=None)

a 表示要排序的数组
axis 表示排序的轴索引,默认是-1,表示最后一个轴
kind 表示排序类型。quicksort:快速排序,为默认值,速度最快;mergrsort:归并排序;heapsort:堆排序
order 表示排序字段

numpy.sum(a,axis=None)

该函数忽略NaN

numpy.nansum(a,axis=None)
numpy.ndarray.sum(axis=None)

求最大值

numpy.amax(a,axis=None)

该函数忽略NaN

numpy.nanmax(a,axis=None)
numpy.ndarray.max(axis=None)

求最小值

numpy.amin(a,axis=None)
numpy.nanmin(a,axis=None)
numpy.ndarray.min(axis=None)

求平均值

numpy.mean(a,axis=None)
numpy.nanmean(a,axis=None)
numpy.ndarray.mean(axis=None)

求加权平均值

numpy.average(a,axis=None,weights=None)

weights 表示权重

数组的保存和读取

该函数可以将一个数组保存至后缀名为”.npy”的二进制文件中

numpy.save(file,arr,allow_pickle=True,fix_imports=True)

file 表示文件名/文件路径
arr 表示要存储的数组
allow_pickle 为布尔值,表示是否允许pickle来保存数组对象
fix_imports 为布尔值,表示是否允许在Python2中读取Python3保存的数据

该函数可以将多个数组保存到未压缩的后缀名为”.npz”的二进制文件中

numpy.savez(file)

该函数可以将多个数组保存到压缩的后缀名为”.npz”的二进制文件中

numpy.savez_compressed(file)

读取”.npy”和”.npz”文件中的数组

numpy.load(file,mmap_mode,allow_pickle,fix_imports)

mmap_mode 表示内存在映射模式,即在读取较大的Numpy数组时的模式,默认情况时None

Original: https://blog.csdn.net/qq_34682906/article/details/121470216
Author: Feng1586
Title: Numpy使用手册

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/760535/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球