python基础

本文介绍了学习深度学习所需的Python基础,包括环境配置如Anaconda的下载与使用,Python的基本语法如算术运算、数据类型、控制结构和函数,以及Numpy包的使用,如数组创建、读写和操作。文章适合初学者,重点在于科学计算方面的准备。
摘要由CSDN通过智能技术生成

深度学习之python基础


本篇文章是作者为了学习深度学习而写的关于python的笔记,比较简单,偏向科学计算。

1.环境配置

环境配置这里我是下载了anaconda.anaconda是python 的一种发行版本。简单来说,下载了anaconda就等于下载了python以及其与科学计算相关的包,并且还能够创建,管理python虚拟环境。

其包括:

  • python 解释器
  • numpy、matplotlib、scipy、scikit-learn等一系列包
  • conda: python环境管理器

1.1 anaconda 下载

下载安装以及简单的使用参考了这篇文章。

anaconda下载及安装(保姆级教程) - 知乎 (zhihu.com)

2. python基础知识

查看python版本

!python --version

简单的算术运算

#注释 
1+2+3
# out:6
2*3
# out:6
3**3
# out:27
6/2
# out:3.0
6//2
# out:3

查看数据类型

type(6/2)
# out:float
type(6//2)
# out:int
type('hello world')
# out:str

变量

x = 10 # int 
print(type(x))
# out: <class 'int'>
y = 100
z = 3.14
print(x+y*z)
print(type(x+y*z))
# out: 324.0
# out: float

python 为 “弱类型语言” ,“弱类型语言”是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换。

如上述代码中所示:用户并未显式指出x的数据类型为int(整型),但python根据x被初始化为10,从而判断它为整形的。

另外在上面的计算中,数据类型发生了自动转换,即整数与浮点数相乘返回的是浮点数。

数据结构(一)列表

python中列表可以理解为一个顺序存储的线性表。

List(列表) 是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。

列表用 [ ] 标识,是 python 最通用的复合数据类型。

(1)初始化

List = [] #
List = list()  # list 内可放一个序列,可以为空

(2)增

List.append('a')
# List: ['a']

(3)删

#1. 根据索引删除元素
del List[0]
#out: List:[]

#2. 删除一段连续的元素
List = [0,1,2,3,4,5]
del List[1:3]
#out: List:[0,4,5]

(4)改

# 根据索引更改元素的值
List[0] = 1
# out:List:[1,4,5]

(5)切片

List[0:2] # [1,4]
List[:2] # [1,4]
List[1:] # [4,5]

列表中元素的访问是以a[0]这样的方式进行的。[]中的数字称为索引或是下标。并且python中的列表可以通过切片这一方法截取列表的某连续部分。

List[-1]
List[:-1]
List[::-1] # 逆序

# out: 5
#	  [1,4]
# 	  [5,4,1]

索引 "-i"代表倒数第i个元素。

数据结构(二)字典

# 初始化,其每个元素为 key-value结构
d = {"a":1,
     "b":2,
     "c":3}


# 访问并修改某个key的值
d["a"] = 2

# 列出对象的所有属性和方法
dir(d)

布尔类型

yes = True #真
no = False # 假

if 语句

hungry = yes
if hungry == yes:
	print(" I`m hungry")
else:
	print(" I`m not hungry")

缩进

python使用空白字符表示缩进。一般而言,没缩进一次,使用4个空白字符。python 使用缩进来表示代码块的开始和结束。

for 语句

for step in range(100):
	print(step,end = ' ')

函数

def Hello(object):
	print('hello',object)
Hello('Lee')
# out: hello,Lee

class Man:
	""""示例类""" # 示例类
    def __init__(self,name):
        self.name = name
        print("初始化成功")
    
    def Hello(self):
        print("hello,",self.name + '!')
        
    def Goofbye(self):
        print("Goofbye,",self.name + '!')
        
m = Man('lee')
m.Hello()
m.Goodbye()
print(type(m))

这里有一个特殊的init方法,是该类的构造函数,只在生成类的实例时调用一次。此外,在python的类中的每个方法的第一个参数都必须为self,指代类本身,使用上类似于c的this指针。

3.Numpy包

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

NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。

NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:

  • 一个强大的N维数组对象 ndarray
  • 广播功能函数
  • 整合 C/C++/Fortran 代码的工具
  • 线性代数、傅里叶变换、随机数生成等功能

数组

import numpy as np #导入numpy包并命名为np,方便使用
# 从已有数据中创建数组
x = np.array([1.0,2.0,3.0])
print(x)
print(type(x))

要生成NumPy数组,需要使用np.array()方法。np.array()接收Python列表作为参数,生成NumPy数组(numpy.ndarray)

小技巧:

1.运行 np.array? 可查看函数array的详细信息

2.输入np. 然后按Tab键,将出现可用方法和属性

使用random模块生成数组

np.random 模块的常用函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8mLnf5Fc-1690184040703)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20230723170116914.png)]

# 1.三维随机数组
nd3 = np.random.random([3,3])

# 2.计算机中的随机数生成函数,生成的是伪随机数。
## 大致可以理解为一个 random()函数输入一个随机种子seed(某个数字)。再经过一系列复杂的计算生成一个数字random
## 所以我们可以设置一定的随机种子时,输出的随机数是一致的。
np.random.seed(123)
a1 = np.random.randn((3,3))
## 可以将生成的随机数,再加一次随机打乱,提高生成数组的熵(随机性)
a1_random = np.random.shuffle(a1)

创建特定的多维数组

import numpy as np

## 输入为数组形状
# 1.元素全为0的三维数组
np.zeros((3,3)) 
# 2.元素全为1的三维数组
np.ones((3,3)) 
# 3.空的多维数组。空数组中的值不是0,而是未初始化的垃圾值
np.empty((3,3))

## 输入为某个已存在的数组,并以他的形状创建新的数组
a1 = np.empty((3,3))

np.zeros_like(a1)
np.ones_like(a1)
np.empty_like(a1)

## 生成特殊矩阵
# 1.单位矩阵
np.eye(3) # 三阶单位矩阵、
# 2.对角矩阵
np.diag([1,2,3])
#	1 0 0
#	0 2 0
#	0 0 3
##  生成全为某个数的矩阵
np.full((3,3),6)


生成有规律的一维数组(向量)

# 1.生成[start,end)范围内的,由start 开始的大小为n的等距数组,距离可修改step的值更改
np.arange(start = 0,end = 10,step = 1)
# [0,1,2,3,4,5,6,7,8,9]
# 2.生成一个线性等分向量 范围[start,end]
np.linspace(start = 0.1,end = 1 ,num = 10) # 即将[0,1]9等分
# 3.对数等比数列
np.logspace(0.1,1,10,base = 10)

numpy数组数据与本地 的 读写

import numpy as np
nd = np.random.ranint((3,3))
# 保存
np.savetxt(X=nd,fname = './test.txt')
# 加载
np.loadtxt('./test.txt')

访问元素

X = np.array([[0,1],[2,3],[4,5]])
#1.下标访问
X 
#  [[0,1],
#   [2,3],
#   [4,5]]
X[0] # [0,1]
X[1] # [2,3]
X[0 1] #0
X[0][1] #0
#2. 迭代访问
for row in X:
   print(row)
#   [0,1]
#   [2,3]
#   [4,5]

Numpy数组的一些操作

#1.将数组展开成一维数组
Y = X.flatten()
# Y:[0 1 2 3 4 5]
#2.交换数组的行
X[np.array([2,1,0])]
#  [[4,5],
#   [2,3],
#   [0,1]]

#3. 布尔型数组
Y > 10
#[false,false,false,false,false,false]

4. 取出满足一定条件的数组
Y[Y>2]
#[3,4,5]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值