pythonarray函数怎么用_NLP学习笔记08---python编程高阶函数使用(numpy数组的创建、索引、装置、文件的操作等)...

本文详细介绍了Python中的列表推导式,包括其语法结构和使用示例,并展示了如何通过`range()`函数生成不同类型的列表。接着,文章深入探讨了NumPy库,解释了NumPy数组的创建、索引、切片、转置等操作,并通过实例演示了数组的批量运算和广播功能。此外,还讲解了numpy的文件操作,如保存和加载数据。最后,提到了NumPy在线性代数中的应用,如矩阵乘法、行列式计算等。
摘要由CSDN通过智能技术生成

1.列表推导式

列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表。

它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以 if 和 for 语句为上下文的表达式运行完成之后产生。

列表推导式的执行顺序:各语句之间是嵌套关系,左边第二个语句是最外层,依次往右进一层,左边第一条语句是最后一层。

(1)range() 函数

可创建一个整数列表,一般用在 for 循环中。

start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);

stop: 计数到 stop 结束,但不包括 stop。例如:range(0,5) 是[0, 1, 2, 3, 4]没有5

step:步长,默认为1。例如:range(0,5) 等价于 range(0, 5, 1)

示例:

>>>range(10) #从 0 开始到 10

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> range(1, 11) #从 1 开始到 11

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>>> range(0, 30, 5) #步长为 5

[0, 5, 10, 15, 20, 25]>>> range(0, 10, 3) #步长为 3

[0, 3, 6, 9]>>> range(0, -10, -1) #负数

[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]>>>range(0)

[]>>> range(1, 0)

[]

(2)列表表达式的应用案例

list = [x*y for x in range(1,5) if x > 2 for y in range(1,4) if y < 3]

print(list)

他的执行顺序是:

for x in range(1,5)if x > 2

for y in range(1,4)if y < 3x*y

运行效果:

2.Numpy简介

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。

SciPy 是一个开源的 Python 算法库和数学工具包。

SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。

Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)。

numpy其实就是一个数组对象。

3.Numpy数组的创建、索引、切片、转置

(1)numpy的入门案例

importnumpy as np

data= [1, 2, 3, 4, 5]

n= np.array(data * 10)print(n)print(n.shape) #shape方法获取n这个数组的维度

print(n.dtype) #获取数组的类型

运行效果:

(2)numpy数组的创建

<1>嵌套序列:由一组等长列表组成的列表

importnumpy as np

arr=[[1,2,3,4],[1,2,3,4]]

arr2=np.array(arr)print(arr2)

效果图:

<2>zeros函数进行指定长度数组的创建

importnumpy as np

arr2=np.zeros(10)print(arr2)

效果图:

<3>ones函数创建数组

importnumpy as np

arr2=np.ones((2,3))print(arr2)

效果图:

<4>arange函数创建数组

importnumpy as np

arr2=np.arange(10)print(arr2)

效果图:

<5>数据类型转换

importnumpy as np

arr=np.array([1,3.4,5,8,9])print(arr)print(arr.dtype)print(arr.astype(np.int32))

效果图:

(3)矢量化

numpy的数组通常在不用编写循环的情况下进行批量运算

<1>一维数组

importnumpy as np

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

arr2=np.array([2,4,6,8])print(arr1+arr2)

效果图:

<2>二维数组

importnumpy as np

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

arr2=np.array([[2,4,6,8],[3,6,9,12]])print(arr1+arr2)

效果图:

<3>其他运算(以乘法为例)

importnumpy as np

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

arr2=np.array([[2,4,6,8],[3,6,9,12]])print(arr1*arr2)

效果图:

<4>numpy数组的广播

importnumpy as np

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

arr2=arr1*5

print(arr1)print(arr2)

效果图:

(4)numpy数组的索引和切片

<1>一维数组

importnumpy as np

arr=np.arange(10)print(arr)print(arr[2]) #获取arr数组的第2个元素(索引从0开始)

print(arr[4:]) #获取arr数组的第4个元素开始到结尾的数组

arr[1:3]=11 #修改数组的元素值(不包含3的位置)

print(arr)

效果图:

<2>二维数组

importnumpy as np

arr=np.array([[1,2,3],[4,5,6]])print(arr[0][1])

效果图:

<3>numpy数组比较运算

importnumpy as np

names=np.array(['tony','jack','linda'])print(names=='jack')

效果图:

<4>numpy数组的花式索引

import numpy as np

arr=np.arange(32).reshape(8,4)

print(arr)

print(arr[[1,5,7,2]])

取出8*4矩阵的第1,5,7,2行组成新的数组

效果图:

(5)数组转置和轴对换

转置是重塑数组的一种特殊形式。常用的方法是T 和transpose

importnumpy as np

arr=np.arange(15).reshape(3,5)print(arr)print(arr.transpose())

效果图:

4.numpy的文件操作

numpy可以读写磁盘上的文本数据或者是二进制数据

(1)保存为npy格式的文件

主要应用的函数是np.save和np.load,默认情况下数据是以未压缩的原始二进制格式保存在扩展名为.npy文件中

importnumpy as np

arr=np.arange(10)

np.save('lucky',arr)print(np.load('lucky.npy'))

效果图:

(2)将数据保存为txt格式的文件

importnumpy as np

arr=np.arange(10)

np.savetxt('lucky.txt',arr,delimiter=',')print(np.loadtxt('lucky.txt',delimiter=','))

效果图:

5.numpy的线性代数

dot函数计算矩阵的乘法运算、trace函数计算对角线元素的和、det函数计算矩阵的行列式、eig计算矩阵的特征值和特征向量、inv计算矩阵的逆

importnumpy as np

x=np.array([[1,2,3],[4,5,6]])

y=np.array([[1,2],[4,5],[7,8]])print(x.dot(y))

效果图:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值