python使用numpy模块的介绍,基本操作,处理数据,包括生成数组,正态分布,均匀数组,数值改变,索引切片,形状修改,类型修改,数组去重,值运算,数组运算,合并分割,IO操作(读取)

目录

初学阶段,可以认为numpy的某些方法也可以运用到pandas模块中,例如np.where()三元运算、unique去重方法、shape方法

1 Numpy介绍

Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组。
Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。
Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。

2 ndarray介绍

NumPy提供了一个N维数组类型ndarray,它描述了相同类型的“items”的集合。
在这里插入图片描述
用ndarray进行存储:
在这里插入图片描述

简单创建一个array类型数据

import numpy as np
# 创建ndarray
score = np.array([[80, 89, 86, 67, 79],
[78, 97, 89, 67, 81],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69],
[76, 87, 75, 67, 86],
[70, 79, 84, 67, 84],
[94, 92, 93, 67, 64],
[86, 85, 83, 67, 80]])
score

在这里插入图片描述

ndarray与Python原生list运算效率对比以及举例代码

在这里我们通过一段带运行来体会到ndarray的好处

import random 
import time 
import numpy as np

a=[]
for i in range(100000000):
    a.append(random.random())
    
t1 = time.time()
sum1 = sum(a)
t2 = time.time()

b = np.array(a)
t4 = time.time()
sum3 = np.sum(b)
t5 = time.time()
#t2-t1为使用python自带的求和函数消耗的时间,t5-t4为使用numpy求和消耗的时间,结果为:
print(t2-t1,t5-t4)

在这里插入图片描述
从中我们看到ndarray的计算速度要快很多,节约了时间。

  • 机器学习的最大特点就是大量的数据运算,那么如果没有一个快速的解决方案,那可能现在python也在机器学习领域达不到好的效果。
    在这里插入图片描述
    Numpy专门针对ndarray的操作和运算进行了设计,所以数组的存储效率和输入输出性能远优于Python中的嵌套列表,数组越大,Numpy的优势就越明显。

3 N维数组-ndarray

ndarray的属性

数组属性反映了数组本身固有的信息。

属性名字 属性解释
ndarray.shape 数组维度的元组
ndarray.ndim 数组维数
ndarray.size 数组中的元素数量
ndarray.itemsize 一个数组元素的长度(字节)
ndarray.dtype 数组元素的类型

ndarray的形状(ndarray.shape)

numpy的array结构和pandas的dataframe结构一样都可以调用查看shape属性
# ndarray的形状
# 创建不同形状的数组
a = np.array([[1,2,3],[4,5,6]])
b = np.array([1,2,3,4])
c = np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]])

a.shape # (2, 3) # 二维数组
b.shape # (4,) # 一维数组
c.shape # (2, 2, 3)  # 三维数组

在这里插入图片描述

ndarray的类型(ndarray.dtype)

  • 注意:若不指定,整数默认int64,小数默认float64
名称 描述 简写
np.bool 用一个字节存储的布尔类型(True或False) ‘b’
np.int8 一个字节大小,-128 至 127 ‘i’
np.int16 整数,-32768 至 32767 ‘i2’
np.int32 整数,-2 31 至 2 32 -1 ‘i4’
np.int64 整数,-2 63 至 2 63 - 1 ‘i8’
np.uint8 无符号整数,0 至 255 ‘u’
np.uint16 无符号整数,0 至 65535 ‘u2’
np.uint32 无符号整数,0 至 2 ** 32 - 1 ‘u4’
np.uint64 无符号整数,0 至 2 ** 64 - 1 ‘u8’
np.float16 半精度浮点数:16位,正负号1位,指数5位,精度10位 ‘f2’
np.float32 单精度浮点数:32位,正负号1位,指数8位,精度23位 ‘f4’
np.float64 双精度浮点数:64位,正负号1位,指数11位,精度52位 ‘f8’
np.complex64 复数,分别用两个32位浮点数表示实部和虚部 ‘c8’
np.complex128 复数,分别用两个64位浮点数表示实部和虚部 ‘c16’
np.object_ python对象 ‘O’
np.string_ 字符串 ‘S’
np.unicode_ unicode类型 ‘U’
举例代码
#  ndarray的类型
a = np.array([[1, 2, 3],[4, 5, 6]], dtype=np.float32)
a.dtype  # dtype('float32')

arr = np.array(['python', 'tensorflow', 'scikit-learn', 'numpy'], dtype =
np.string_)
arr.dtype # dtype('S12')

3.1基本操作

3.1.1生成数组的方法

1 生成0和1的数组
  • empty(shape[, dtype, order]) empty_like(a[, dtype, order, subok])
  • eye(N[, M, k, dtype, order])
  • identity(n[, dtype])
  • ones(shape[, dtype, order])
  • ones_like(a[, dtype, order, subok])
  • zeros(shape[, dtype, order]) # 常用
  • zeros_like(a[, dtype, order, subok])
  • full(shape, fill_value[, dtype, order])
  • full_like(a, fill_value[, dtype, order, subok])
# 基本操作
# 生成数组的方法
# 生成0和1的数组
zero = np.zeros([3, 4])
zero

在这里插入图片描述

# 基本操作
# 生成数组的方法
# 生成0和1的数组
one = np.ones([3,4])
one

在这里插入图片描述

2 从现有数组生成
  • array(object[, dtype, copy, order, subok, ndmin])
  • asarray(a[, dtype, order])
  • asanyarray(a[, dtype, order])
  • ascontiguousarray(a[, dtype])
  • asmatrix(data[, dtype])
  • copy(a[, order])
# 基本操作
# 生成数组的方法
# 2 从现有数组生成
a = np.array([[1,2,3],[4,5,6]])
print(a)
print(a.dtype)
print('============')
# 从现有的数组当中创建
a1 = np.array(a)
print(a1)
print(a1.dtype)
print('============')
# 相当于索引的形式,并没有真正的创建一个新的
a2 = np.asarray(a)
print(a2)
print(a2.dtype)

在这里插入图片描述

3 生成固定范围的数组
  • np.linspace (start, stop, num, endpoint, retstep, dtype)
    生成等间隔的序列
  • numpy.arange(start,stop, step, dtype)
  • numpy.logspace(start,stop, num, endpoint, base, dtype)

                
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值