Python数据分析与应用---Numpy数组计算基础(知识点)

一、Numpy概述

1、Numerical Python,数值的Python,补充了Python语言所欠缺的数值计算能力。

2、Numpy是其它数据分析及机器学习库的底层库。

3、Numpy完全标准C语言实现,运行效率充分优化。

4、Numpy开源免费。

二、Numpy历史

1、1995年,Numeric,Python语言数值计算扩充。

2、2001年,Scipy-->Numarray,多维数组运算。

3、2005年,Numeric+Numarray-->Numpy。

4、2006年,Numpy脱离了Scipy成为独立的项目。

三、Numpy的核心:多维数组(与list对比)

1、代码简洁:减少Python代码的循环

如何使用循环生成二维、三维list?

2、底层实现:厚内核(C)+薄接口(Python),保证性能。

四、Numpy介绍

Numpy提供了两种基本对象:

Ndarray:多维数组对象。----单类型(一种类型),

Ufunc:能够对数组进行处理的函数。

五、numpy的安装

(1)cmd安装:python –m pip install numpy –i 网址

(2)pycharm中安装

六、numpy基本操作

6.1.数组对象ndarray

数组的基本属性:

ndim

返回int,数组的维度

shape

返回tuple,数组形状

size

返回int,表示数组元素总数

dtype

返回data-type,数据元素类型

itemsize

返回int,每个元素的存储空间字节

创建数组对象函数:

(1)array函数

numpy.array(object,dtype=None,*,copy=True,order='K',subok=False, ndmin=0,like=None)

object所需创建的数组对象
dtype数组数据类型
ndmin接收int数组的维度

案例1:创建普通数组,指定数据类型:

import numpy as np #导入numpy库

arr1 = np.array([1,2,3,4]) #创建一维数组

arr2 = np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]]) #创建二维数组

print(arr2.shape) #查看数组形状

print(arr2.dtype) #查看数组元素类型

print(arr2.size) #查看数组元素个数

print(arr2.itemsize) #查看数组每个元素存储空间

t1 = np.array(range(1,4),dtype='int8')  # 指定numpy中创建的数组的数据类型
print(t1)  # 输出结果:[1 2 3]
print(t1.dtype)    # 输出结果:int8

t2 = np.array([1,0,1,1,0,1],dtype=’str_’) # numpy 中的bool 类型
print(t2)  # 输出结果: [ '1' '0' '1' '1' '0' '1']
print(t2.dtype)    # 输出结果:<U1

t3 = np.array([1,0,1,1,0,1],dtype=’bool’)
print(t3)  # 输出结果: [ True False  True  True False  True]
print(t3.dtype)    # 输出结果:bool

t4 = np.array(['2023-02-22','2021-02-22'],dtype=’datetime64’)
# t4 = np.datetime64('2023-02-22')
print(t4)  #输出结果:['2023-02-22' '2021-02-22']

案例2:自定义复合数据类型数组

#data包括姓名name,成绩score,年龄age
import numpy as np
data=[
    ('张三', [90, 80, 85], 15),
    ('李四', [92, 81, 83], 16),
    ('王五', [95, 85, 95], 15)
     ]
#第一种方式
a = np.array(data,dtype='U3,3int32,int32')
print(a[0]['f0'], ":", a[0]['f1'])

#第二种方式
b = np.array(data, dtype=[('name', 'str_', 3),
                    ('scores', 'int32', 3),
                    ('ages', 'int32', 1)])
print(b[0]['name'], ":", b[0]['scores'])
print(b[1]['name'], ":", b[1]['scores'])

#第三种方式
c = np.array(data, dtype={'names': ['name', 'scores', 'ages'],
                    'formats': ['U3', '3i4', 'int32']})
print(c[0]['name'], ":", c[0]['scores'], ":", c.itemsize)

案例3:修改数组类型

n1 = np.array(range(1,4))
print(n1)
#astype变换数组类型需要存放新对象中
n2 = n1.astype(dtype=np.float32)
print(n2)
print(n2.dtype,n1.dtype)
(2)arange函数

用于创建一维数组,不包括stop值。

numpy.arrage([start,]stop[,step], dtype=None)

start数组的开始值
stop数组的终值
step值之间的步长
dtype输出数组的类型

案例:

import numpy as np
arr1 = np.arange(0,1,0.1)
print(arr1)

(3)zeros/ones函数

  zeros函数用于创建元素全部为0的数组,即将创建的数组的元素全部填充为0;

  ones函数用于创建元素全部为1的数组,即将创建的数组的元素全部填充为1;

    numpy.zeros(4)或zeros((3,3)),可将zeros换成ones函数。

import numpy as np
arr1 = np.zeros((3,3))
print(arr1)
arr2 = np.ones((3,3))
print(arr2)

(4)eye函数

   eye函数用于生成主对角线上的元素为1,其它元素为0的二维数组(类似单位矩阵)

import numpy as np
arr1 = np.eye((3))
print(arr1)

(5)diag函数

用于创建指定对角线上的元素,其它元素为0.(类似对角矩阵),即除对角线上的元素以外的其他元素都为0,对角线上的元素可以是0或者其他值;

import numpy as np
arr1 = np.diag([1,2,3,4])
print(arr1)

(6)linspace函数

指定开始,终值和元素个数创建一维等差数组,包含终值。

start

起始站

stop终值
num生成的样本数
dtype输出数组的类型
import numpy as np
arr1 = np.linspace(0,1,12)
print(arr1)

(7)logspace函数

指定开始,终值和元素个数创建一维等比数组,包含终值。

  默认创建数值为10的幂,如果需要改变,可通过base参数设置。

import numpy as np
arr1 = np.logspace(0,2,20)
print(arr1)
6.2.生机随机数

(1) np.random.random(size=())  #size可为元组,可以是一、二、三维,产生值:0-1浮点数

(2) np.random.rand(d0,d1…)    #d0,d1….接收int,表示数组维度,产生均匀分布随机数

(3) np.random.randn(d0,d1…)   #与 rand函数类似,产生服从正态分布随机数

(4)np.random.randint(low,high,size,dtype)  #产生从low到high之间size个元素,size可以是一个元组,指定维度,dtype指定数组类型
(5) np.random.uniform(-1, 5, size = (3, 4))  #可以指定区间(-1, 5), size用于指定维度

(6)其它常用随机数函数

seed

确定随机数生成器的种子

permutation返回一个序列的随机排列或者返回一个随机排列的范围
shuffle对一个序列进行随机排序
binomial

产生服从二项分布的随机数

normal

产生服从正态分布的随机数

beta产生服从beta分布的随机数
chisquare产生服从卡方分布的随机数
gamma产生服从gamma分布的随机数
uniform产生在[0.0,1.0]中均匀分布的随机数
6.3.数组的索引(start:0,end:n-1)

(1)一维:  a[start:end:step]   正向反向都可

              a[0:10:2]      a [-1:-10:-2]

(2)二维:  a[start:end,start:end]第一个冒号是行,第二个冒号是列,也可以单行单列罗列。

          a[0:1,2:3]   #第1、2行的第3、4列

6.4ndarray的其它操作

1、修改数组形状

(1) reshape:接收int或元组

n1 = np.array(range(1,19))
print(n1)
n2 = n1.reshape(2,9)
print(n2)
print(n2.reshape(2,3,3))
print(n2.reshape((1,))) #语句出错,只能向高维度转换

(2)ravel:完成数组展平工作  

n1 = np.array(range(1,19))
print(n1)
n2 = n1.reshape(2,9)
n3 = n2.reshape(2,3,3)
print(n3.ravel())

(3) flatten:可以选择横向或纵向展平数组

n1 = np.array(range(1,19))
n2 = n1.reshape(2,9)
n3 = n2.reshape(2,3,3)
print(n1,n2,n3,sep='\n')
print(n2.flatten('F'))  #纵向展平
print(n2.flatten('C'))  #横向展平,C可省略
print(n3.flatten('F'))  #纵向展平
print(n3.flatten('C'))  #横向展平,C可省略

2、数组切片(通过索引实现数组元素的获取)0。。。。。n-1,-1。。。。。。-n

(1) 一维数组切片

(2) 二维数组切片

(3) 三维数组切片

n1 = np.array(range(1,19))
n2 = n1.reshape(2,9)
n3 = n2.reshape(2,3,3)
print(n1,n2,n3,sep='\n')
print(n1[::-1])        #反转一维数组
print(n2[::-1,::-1])   #反转二维数组
print(n3[::-1,::-1,::-1])   #反转三维数组
print(n1[2:19:3])# 打印n1中索引为2至19,步长值为3的数组元素
print(n1[:5])# 打印n1中索引为5以前的数组元素
print(n2[0,3:5])# 打印n2中第1行第4、5列的元素
print(n3[[0,1],1,...])# 打印n3中第2行所有元素
print(n3[[0,1],...,1])# 打印n3中第2列所有元素

3、组合数组

(1) concatenate函数:沿着指定轴连接相同形状的两个或多个数组,axis参数设置轴

(2) hstack函数:实现水平(横向)堆叠序列中的数组(列方向)

(3) vstack函数:实现垂直(纵向)堆叠序列中的数组(行方向)

n1 = np.array(range(1,19)).reshape(6,3)
n2 = np.arange(20,38,1).reshape(6,3)
print(n1,n2,sep='\n')
print(np.concatenate((n1,n2),axis=1))  #等同print(np.hstack((n1,n2)))
print(np.hstack((n1,n2)))
print(np.concatenate((n1,n2),axis=0))  #等同print(np.vstack((n1,n2)))
print(np.vstack((n1,n2)

4、分割数组

(1) split函数:沿着特定的轴将原数组分割为多个子数组, axis参数设置轴

(2) hsplit函数:将一个数组从水平方向分割为多个子数组

(3) vsplit函数:将一个数组从垂直方向分割为多个子数组

n1= np.arange(1,37,1).reshape(6,6)
print(n1)
#indices_or_sections用于设置分割的份数,设置一个整数表示平均分割,设置一个数组按指定索引位置分割
print(np.split(n1,indices_or_sections=3,axis=0)) #等同np.vsplit(n1,indices_or_sections=3)
print(np.vsplit(n1,indices_or_sections=3))
print(np.split(n1,indices_or_sections=3,axis=1)) #等同np.hsplit(n1,indices_or_sections=3)
print(np.hsplit(n1,indices_or_sections=3))
print(np.split(n1,indices_or_sections=[2,4,6]))

  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一种简单易学的编程语言,非常适合初学者入门。它具有清晰的语法和丰富的函数库,可以用于各种应用领域,包括数据分析、机器学习、Web开发等。 下面是Python入门的一些基础知识点: 1. 安装Python:首先需要在官网下载并安装Python解释器,推荐使用最新版本的Python 3。 2. 变量和数据类型:Python中的变量可以直接赋值,不需要声明类型。常见的数据类型包括整数、浮点数、字符串、列表、元组和字典。 3. 控制流程:Python支持条件语句(if-else)、循环语句(for、while)和函数定义,可以用于控制程序的执行流程。 4. 函数和模块:Python提供了丰富的内置函数,同时也可以自定义函数。模块是一组相关函数和变量的集合,可以通过import语句引入并使用。 5. 文件操作:Python可以读写文件,可以使用open函数打开文件并进行读写操作。 NumpyPython中常用的数值计算库,提供了高效的多维数组对象和各种数学函数。以下是Numpy函数库的基础知识点: 1. 数组创建:可以使用numpy.array函数创建数组,也可以使用numpy.arange、numpy.zeros、numpy.ones等函数创建特定形状的数组。 2. 数组操作:可以对数组进行索引和切片操作,也可以进行数组的形状变换、合并和分割等操作。 3. 数学函数:Numpy提供了丰富的数学函数,包括常见的数学运算、三角函数、指数函数、对数函数等。 4. 线性代数:Numpy提供了线性代数相关的函数,如矩阵乘法、求逆矩阵、求特征值等。 5. 随机数生成:Numpy可以生成各种分布的随机数,如均匀分布、正态分布等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值