Lawliet|Python学习笔记——numpy库

1.numpy库认知

  • Numpy:表达N维数组的最基础库
  • 库由c语言实现,Python来接口使用,计算速度优异
  • 是Python数据分析及科学计算的基础库,支撑Pandas等
  • 提供直接的矩阵运算、广播函数、线性代数等功能

2.numpy库的安装

Windows+R——cmd——输入如下命令:

pip install numpy

前提:所使用的python版本中配置了pip工具,在python3.9中会自动配置

3.numpy库的功能

  • ndarray:一个具有矢量(向量)算术运算和复杂广播能力的快速且节省空间的多维数组
  • 用于对数组数据进行快速运算的标准数学函数(无需编写循环)
  • 线性代数、随机数生成以及傅里叶变换功能
  • 用于读写磁盘数据的工具

4.numpy-ndarray对象

a.ndarray概念、特点

  • 一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。

  • ndarray 对象是用于存放同类型元素的多维数组。

  • ndarray 中的每个元素在内存中都有相同存储大小的区域。

  • ndarray数组中实现了成熟的广播机制,矩阵运算时不需要写for循环

  • ndarray 内部由以下内容组成:
    (1)一个指向数据(内存或内存映射文件中的一块数据)的指针。 数据类型或 dtype,描述在数组中的固定大小值的格子。
    (2)一个表示数组形状(shape)的元组,表示各维度大小的元组。
    (3)一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。

创建一个ndarray:

import numpy
numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0

参数描述:
Lawliet|Python学习笔记——numpy库_第1张图片

b.ndarray的属性

Lawliet|Python学习笔记——numpy库_第2张图片

(1).ndim秩

Lawliet|Python学习笔记——numpy库_第3张图片
如图:维度称为轴,轴的个数为秩(rank)

(2).shape维度

一维数组:(M, )
二维数组:(M,N)
三维数组:(K,M,N)

(3).size个数

数据元组的总个数
一维数组:M
二维数组:MN
三维数组:M
N*K

(4).dtype数据类型

用于描述与数组对应的内存区域是如何使用——
·其描述了数据的

  • 类型(见c中表格)
  • 大小(存储所用空间)
  • 字节顺序1
  • 在结构化类型的情况下,字段的名称、每个字段的数据类型和每个字段所取的内存块的部分
  • 如果数据类型是子数组,那么其形状和数据类型为何
#dtype对象的语法构造:
numpy.dtype(object,align,copy)
  • dtype内容
  • object - 要转换为的数据类型对象
  • align - 如果为 true,填充字段使其类似 C 的结构体。
  • copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用

(5)创建数组的方式

array方式创建

import numpy as np
array1=np.array([1,2,3])
array1
#------>array([1,2,3])
array2=np.array([(1,2,3),(4,5,6)])
array2
'''------>array([[1,2,3]],
                [4,5,6]])'''

arange方法创建

arange函数用于创建等差数组,类似于range函数
range()返回值为列表,np.arange()返回值为数组,两者都可以用于迭代
两者均有三个参数:startstep
range()不支持步长为小数,np.arange()支持步长为小数

import numpy as np
n=np.arange(0,30,2)
print(n)
print(n.shape)
print(n.dim)
'''
------>[0 2 4 6 8 10 12 14 16 18 20 22 24 26 28]
------>shape:(15,)
------>ndim:1

linspace方法创建

从起始点到终止点以及个数确定的情况下创建一个等差数组。可以通过endpoint 参数指定是否包含终值,默认值为 True,即包含终值。

import numpy as np
np.linspace(1,2,10,endpoint=False)
#->array([1.,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9])

logspace方法创建

logspace函数用于创建一个等比数列

np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)

base:取对数时log的下标

Lawliet|Python学习笔记——numpy库_第4张图片

import numpy as np
#默认base为10
a=np.logspace(1.0,2.0,num=10)
print(a)

输出结果

[ 10.           12.91549665     16.68100537      21.5443469  27.82559402      
  35.93813664   46.41588834     59.94842503      77.42636827    100.    ]
import numpy as np
a=np.logspace(0,9,10,base=2)
print(a)
[1. 2. 4. 8. 16. 32. 64. 128. 256. 512.]

基础数组创建

import numpy as np
np.ones([3,3])

Lawliet|Python学习笔记——numpy库_第5张图片

import numpy as np
np.zeros([3,3])

Lawliet|Python学习笔记——numpy库_第6张图片

import numpy as np
np.eye(4)

Lawliet|Python学习笔记——numpy库_第7张图片

c.ndarray数组的数据类型

Lawliet|Python学习笔记——numpy库_第8张图片
Lawliet|Python学习笔记——numpy库_第9张图片

d.ndarray的切片

,切片

import numpy as np
a=np.arange(10)
s=slice(2,7,2)
print (a[s])
[2 4 6]

:切片

如果只放置一个参数,将返回与该索引相对应的单个元素。如果为 [2:],表示从该索引开始以后的所有项都将被提取。如果使用了两个参数,如 [2:7],那么则提取两个索引(不包括停止索引)之间的项。
多维数组同样适用:

import numpy as np
a=np.array([[1,2,3],[3,4,5],[4,5,6]])
print(a)
print(a[1:])
------>
[[1 2 3]
 [3 4 5]
 [4 5 6]]
[[3 4 5]
 [4 5 6]] 

注!:1.将一个标量赋值给一个切片时,该值会自动传播到整个选区(切片区)
Lawliet|Python学习笔记——numpy库_第10张图片
2.数组切片是原始数组的视图,任何修改都会改变原数组
如果不想改变,则需要copy()
Lawliet|Python学习笔记——numpy库_第11张图片

…切片

…来使选择元组的长度与数组的维度相同。 如果在行位置使用省略号,它将返回包含行中元素的 ndarray。

import numpy as np
a=np.array([[1,2,3],[3,4,5],[4,5,6]])
print(a[...,1]) #第2列元素
print(a[1,...]) #第2行元素
print(a[...,1:]) #第2列及剩下的所有元素

5.Numpy数组的操作

a.修改数组形状

Lawliet|Python学习笔记——numpy库_第12张图片

reshape

import numpy as np
n=np.arange(0,20,2)
n=n.reshape(2,5)
print(n)
print('shape=',n.shape)
------>
[[0 2 4 6 8 ]
[10 12 14 16 18]]
shape=(2,5)
shape[0]=2
shape[1]=5

Lawliet|Python学习笔记——numpy库_第13张图片

b.翻转数组

Lawliet|Python学习笔记——numpy库_第14张图片

c.修改数组维度

Lawliet|Python学习笔记——numpy库_第15张图片

d.连接数组

Lawliet|Python学习笔记——numpy库_第16张图片

e.分割数组

Lawliet|Python学习笔记——numpy库_第17张图片

f.数组元素的添加与删除

Lawliet|Python学习笔记——numpy库_第18张图片

参考:https://www.runoob.com/numpy/numpy-tutorial.html
(侵删)
随便补充= =后续整理
Lawliet|Python学习笔记——numpy库_第19张图片
Lawliet|Python学习笔记——numpy库_第20张图片


  1. 字节顺序是通过对数据类型预先设定 < 或 > 来决定的。 < 意味着小端法(最小值存储在最小的地址,即低位组放在最前面)。> 意味着大端法(最重要的字节存储在最小的地址,即高位组放在最前面)。 ↩︎

你可能感兴趣的:(python学习笔记,python库学习,numpy库,1024程序员节,python,numpy)