终端里面应用商店
有两种 anaconda:完整版,Miniconda:迷你版本
我的理解是软件库有的大小,有一些安装可能必须要借用anaconda,太大了能不用就不用
https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
或者直接在bing搜索miniconda清华,后面会给miniconda的下载链接,按照日期排序,直接下载。sh,这是一个下载的脚本,我们用的是windows的子系统,所以下载的时候下载Linux系统的,直接用口令下载就行。
安装,上一步的下载可以通过口令也可以下载后放到Linux的文件里面直接bash运行
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
Miniconda3-latest-Linux-x86\_64.sh #下载 bash Miniconda3-latest-Linux-x86\_64.sh #
运行安装脚本 source ~/.bashrc #相当于建立快捷方式以后可以直接在终端启用 conda #看一下成功了没,最后一行会有是否成功的提示
在这个过程中,问你问题的一律yes。
平时下载速度会慢所以配置一下镜像
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/
conda config --set show\_channel\_urls yes #设置Conda在搜索软件包时显示通道的URL,这样用户可以看到每个软件包是从哪个镜像源下载的
$ conda config --show channels #检查一下看看能不能返回到刚才添加的哪些
channels:
- https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/
- https://mirrors.bfsu.edu.cn/anaconda/pkgs/free/
- https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge/
- https://mirrors.bfsu.edu.cn/anaconda/cloud/bioc
- https://repo.anaconda.com/pkgs/main
- https://repo.anaconda.com/pkgs/r
(base) root 23:53:06 ~
conda的替代品,速度和兼容性更有优势,和conda的口令一样,可以用conda安装
conda install mamba -y #出现一大片就是成功
我遇到了错误
(base) root 23:58:53 ~
$ conda install mamba -y
Channels:
- https://mirrors.bfsu.edu.cn/anaconda/cloud/bioconda
- https://mirrors.bfsu.edu.cn/anaconda/pkgs/main
- https://mirrors.bfsu.edu.cn/anaconda/pkgs/free
- https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge
- https://mirrors.bfsu.edu.cn/anaconda/cloud/bioc
- defaults
Platform: linux-64
Collecting package metadata (repodata.json): failed
UnavailableInvalidChannel: HTTP 404 NOT FOUND for channel anaconda/cloud/bioc <https://mirrors.bfsu.edu.cn/anaconda/cloud/bioc>
The channel is not accessible or is invalid.
You will need to adjust your conda configuration to proceed.
Use `conda config --show channels` to view your configuration's current state,
and use `conda config --show-sources` to view config file locations.
#因为我上面有一个无效的源把这个源删掉
conda config --remove channels https://mirrors.bfsu.edu.cn/anaconda/cloud/bioc
#之后就安装成功了,本来还以为多一个没用的没得事,想错了
相当于分身,互不干扰,各自干活
conda info --envs
bash 环境的特点
1.默认环境
2.包含conda,对其他环境具有管理权
3.系统级别的依赖
4.不建议直接使用
环境本身互相独立,所以假如整错了也不用担心,直接重来就行
mamba env remove -n envi1 # 删除环境,j激活的时候非得说你灭安装mamba,所以直接删了重新安装一下子
mamba create -n envi1 numpy matplotlib pandas jupyterlab # 这条命令是用来创建一个新的虚拟环境并安装指定的Python包的,numpy matplotlib pandas jupyterlab
(base) root 17:56:40 ~
$ conda info --env
# conda environments:
#
base * /root/miniconda3
envi1 /root/miniconda3/envs/envi1
(base) root 17:58:36 ~
$ mamba activate envi1 #激活环境,有warning但是确实成功了
warning libmamba You have not set the root prefix environment variable.
To permanently modify the root prefix location, either:
- set the 'MAMBA_ROOT_PREFIX' environment variable
- use the '-r,--root-prefix' CLI option
- use 'mamba shell init ...' to initialize your shell
(then restart or source the contents of the shell init script)
Continuing with default value: "/root/miniconda3"
(envi1) root 17:58:44
激活的时候还是遇到了问题,用mamba就不行,conda激活可以
$ mamba activate envi1
critical libmamba Cannot activate, prefix does not exist at: '/root/.local/share/mamba/envs/envi1'
(base) root 15:35:51 ~
$ conda activate envi1
(envi1) root 15:36:12 ~
mamba install seaborn -y #这是要安装的 Python 包的名称。Seaborn 是一个基于 Matplotlib 的统计数据可视化库,它提供了一个高级接口,用于绘制吸引人的统计图形。-y:这个选项是 --yes 的简写形式,它告诉 mamba 自动确认所有提示
# 检查一下安装是否成功
(envi1) root 18:04:18 ~
$ python -c "import seaborn; print(seaborn.__version__)"
0.13.2 #输出版本号成功
之后会给连接复制到浏览器里面
哇哦是这样的
现在进来是base环境,但是我峨嵋你要用的是envi1,所有先激活一下,然后的口令是Python 中安装一个新的 IPython 内核,并且将这个内核与 Jupyter Notebook 或 Jupyter Lab 关联起来
(base) root 16:00:10 ~
$ conda activate envi1
(envi1) root 16:00:31 ~
$ python -m ipykernel install --user --name env1 --display-name "Python (envi1)"
Installed kernelspec env1 in /root/.local/share/jupyter/kernels/env1
关闭网页,在ubuntu中按快捷键ctrl+c 然后输入yes,就退出了
每一步包可以重来,实在不行删了这个环境一切重来,包不行就删包,实在不行删环境。
因为之前不是在自己建立的普通用户里面进行的conda 安装,因此现在在新的普通用户没有conda只能在一开始默认的用户做这些啦
虚拟机可以直接连接到windows里面的文件夹,因此直接在windows下面新建一个文件夹,再打开jupyter lab
/mnt/g/Document/pythontest #python 保存的内容
jupyter lab --allow-root
#通过浏览器打开后,激活小环境
(base) root 18:08:28 /mnt/g/Document/pythontest
$ conda info --envs
# conda environments:
#
base * /root/miniconda3
envi1 /root/miniconda3/envs/envi1
(base) root 18:10:33 /mnt/g/Document/pythontest
$ conda activate envi1
有光标:就是平时编辑文字的小数线,对应的是编辑模式
无光标:命令模式
编辑模式切换到命令模式(不能编辑,可以用快捷键):Esc
只有命令模式下才能执行这些快捷键操作哦:大小写没有要求
切换到编辑模式(可以编辑,不能用快捷键):Enter
切换到markdown单元:按M
切换到代码单元:按Y
运行当前单元:Shift + Enter或者是Ctrl + Enter
添加新单元:按 B
删除当前单元:按 D 两次
如果 a.jpg 位于工作目录下的子文件夹 'images' 中
引用> 后面加引用来源
# ** 读书何为**
## 为**天地**立心
## 为**生民**立命
## 为**往圣继绝学**
## 为万世开太平

> 花花老师
拓展阅读:魔法函数 https://mp.weixin.qq.com/s/dOAemmH6pZ8JMVC-1XMivw # 确实魔法
单行注释:用 # 开头。
多行注释:用三引号 ''' 或 """ 包裹。
变量和赋值
使用 = 进行赋值。
变量名区分大小写,且必须以字母或下划线_ 开头。
函数可以直接调用:round(), abs(), type()
方法表示动作或行为,需要用点号和括号:.upper(), .lower(), .append()
属性表示状态或特征,只需要点号:.shape, .size
模块是一个.py文件
包是多个模块的集合,是文件夹,一定包含init.py文件
库是具有特定功能的包的集合
库 > 包 > 模块
使用方法一致
赋值用=
Python 中的数据类型:
int (integers,整数):不带小数的数字
float (floating point numbers,浮点数):带小数点的数字
bool (booleans,布尔值,# R中的逻辑值):True 或 False 值
str (strings,字符串):通常用于表示文本。但是,用引号括起来的任何内容(单引号或双引号)都被视为字符串。
用type() 函数判断对象的数据类型。
数据类型的转换用以下三个函数
str()
str(123) # 输出: '123'
str(True) # 输出: 'True'
str([1, 2, 3]) # 输出: '[1, 2, 3]'
int()
int(123.9) # 输出: 123
int('456') # 输出: 456
int('101', 2) # 输出: 5 (二进制字符串转换为十进制整数)
float()
float(123) # 输出: 123.0
float('456.78') # 输出: 456.78
bool()
bool(123) # 输出: True
bool(0) # 输出: False
bool('hello') # 输出: True
bool('') # 输出: False
#在 Python 中,以下值被视为布尔 False:None、False、任何数值类型的零(如 0、0.0)、空字符串 ""、空列表 []、空字典 {} 等。所有其他值都被视为 True。
列表是有序的集合,其中的元素可以通过索引来访问,但它们没有名字,只能通过位置来引用。
###创建
用一对方括号创建,每个元素之间用逗号分隔。
x = 1,'2',True
python 提取的时候注意是从第一个元素开始是0号,所以提取的时候提取第二位是1号
l[0]
# 1
从后往前
表示选择倒数第几个。
x = [1,"2",True]
x[-1]
#True
###提取多个元素
要提取多个连续值,可以使用冒号 (:)。在指定范围时,包含起始值,但不包含结束值。
l[0:2]
#1,'2' #不包含第三个数值
冒号隔开的值,第一个值表示开始位置,第二个值表示结束位置。还可以使用额外的第三个值来指定步长。因此,如果要从列表中的前 5 个元素中每隔一个数取一个数,则应写 0:5:2。
x = [0,1,2,3,4]
x[0:5:2]
#0,2,4
冒号隔开的值允许空着。
第一个值空着,则表示从第0位开始;
第二个值空着,则表示到最后一位结束;
前两个值空着,写第三个值,表示所有元素每隔指定的步长取一个数。
x = ['a','b','c']
x
## ['a', 'b', 'c']
y = x
y[1] = 'z'
y
## ['a', 'z', 'c']
x
## ['a', 'z', 'c']
如果让y=x,然后对y进行了修改,那么这个修改居然会同步给x!
所以得用拷贝y = x.copy()来代替y=x。
列表、数据框、字典、矩阵都是这样,这是“引用”而不是复制。
###创建:
字典用一对大括号 { } 创建,并以键值对的形式存储。键和值用冒号分隔。多个键值对之间用逗号分隔。
###提取
有元素名字的列表,提取的时候用键来提取
字典是另一种数据结构,它存储的是键值对(key-value pair),其中的每个元素都由一个键(key)和一个值(value)组成。键是唯一的,用于标识对应的值。键值对之间用冒号(:)分隔,整个字典中不同的键值对之间用逗号(,)分隔。
my_dict = {'name': 'Alice', 'age': 25, 'city': 'Wonderland'}
在这个字典中,'name'、'age' 和 'city' 是键,而 'Alice'、25 和 'Wonderland' 是与这些键对应的值。我们可以通过键来访问对应的值,例如 my_dict'name' 会返回 'Alice',提取要通过键提取
提取的第二种方法:.get() 方法主要用于字典(dictionary)数据结构。这个方法允许你通过指定的键来安全地获取字典中的值,如果键不存在于字典中,它不会抛出异常,而是返回一个默认值,这个默认值可以是 None 或者你指定的任何其他值。
my_dict = {'a': 1, 'b': 2, 'c': 3}
# 提取存在的键
value = my_dict.get('b') # 返回 2
# 提取不存在的键
value = my_dict.get('d') # 返回 None,因为没有键 'd'
from operator import itemgetter
# 创建提取器
getter1 = itemgetter('name', 'age')
# 提取
list(getter1(dict1))
# ['Tom', 25]
###单独提取字典的键和值
.keys()
返回一个包含字典所有键的视图对象。
可以迭代访问字典中的所有键。
返回的视图对象会随着字典的修改而更新。
.values()
返回一个包含字典所有值的视图对象。
可以迭代访问字典中的所有值。
返回的视图对象会随着字典的修改而更新。
.items()
返回一个包含所有键值对的列表,每个键值对是一个元组。
可以迭代访问字典中的键和值。
返回的列表是字典在那一刻的快照,不会随着字典的修改而更新。
元组(tuple)
元组是一种有序的、不可变的序列,用于存储不同的值。
定义元组时使用圆括号 () 或者简单的逗号分隔。
元组中的元素不能被修改,尝试修改会导致 TypeError。
元组可以包含任何类型的值,包括数字、字符串、列表和其他元组。
通过索引访问元组中的元素,支持 count() 和 index() 等方法。
元组的不可变性使它们适合作为字典的键或在需要确保数据不被改变的场景下使用。
person = {
'name': 'Alice',
'age': 30,
'city': 'Wonderland'
}
# 获取所有键
keys = person.keys()
print(list(keys)) # 输出: ['name', 'age', 'city']
# 获取所有值
values = person.values()
print(list(values)) # 输出: ['Alice', 30, 'Wonderland']
# 获取所有键值对
items = person.items()
print(list(items)) # 输出: [('name', 'Alice'), ('age', 30), ('city', 'Wonderland')]
###新增元素
.update表示给字典新增元素,有则改之,无则新增
dict1.update({'gender': 'male','height': 185})
dict1
## {'name': 'Tom', 'age': 25, 'city': 'Beijing', 'gender': 'male', 'height': 185}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。