【pandas】17 数据处理和绘图

news2024/9/9 0:51:33

【pandas】17 数据处理和绘图

2023.1.16 pandas数据处理方法和绘图:读取数据、更改数据、时间数据等
主要参考:https://mofanpy.com/tutorials/data-manipulation/pandas/time

17.1运算方法

17.1.1 筛选赋值运算

  • 就是用前面的方法对数据进行筛选,然后对值进行一定的操作(对数据修改)

本章实例就是通过不同方法筛选出需要的位置,进行赋值

import pandas as pd
import numpy as np

data = np.arange(-12, 12).reshape((6, 4))
df = pd.DataFrame(
  data, 
  index=list("abcdef"), 
  columns=list("ABCD"))
df
ABCD
a-12-11-10-9
b-8-7-6-5
c-4-3-2-1
d0123
e4567
f891011
# 对A列*0操作
df["A"] *= 0
df
ABCD
a0-11-10-9
b0-7-6-5
c0-3-2-1
d0123
e0567
f091011
# 对(0,0),(1,0)位置重新导入值 用两种方法
# loc是索引,iloc是位置
df.loc['a','A']=100
df.iloc[1,0]=200
df
ABCD
a100-11-10-9
b200-7-6-5
c0-3-2-1
d0123
e0567
f091011
# 对a行都乘以2
df.iloc[0,:] *= 2
df
ABCD
a200-22-20-18
b200-7-6-5
c0-3-2-1
d0123
e0567
f091011
#对A列中是0的都选为1
df["A"][df["A"]==0]=1
df
ABCD
a200-22-20-18
b200-7-6-5
c1-3-2-1
d1123
e1567
f191011

17.1.2 apply

  • 数据.apply(方程式,。。):通过方程式的筛选选择,批量修改
df
ABCD
a200-22-20-18
b200-7-6-5
c1-3-2-1
d1123
e1567
f191011
# 做开2次方
df.apply(np.sqrt)
ABCD
a14.142136NaNNaNNaN
b14.142136NaNNaNNaN
c1.000000NaNNaNNaN
d1.0000001.0000001.4142141.732051
e1.0000002.2360682.4494902.645751
f1.0000003.0000003.1622783.316625
  • 通过一个方程 返回了第一列的两倍 ;第二列-1
def func(x):
    return x[0] * 2, x[1] * -1

df.apply(func, axis=1, result_type='expand')
01
a40022
b4007
c23
d2-1
e2-5
f2-9
df.iloc[0]
A    200
B    -22
C    -20
D    -18
Name: a, dtype: int32
  • result_type='expand':让输出的结果可以生成多 column。如下:
def func(x):
    return x[0] * 2, x[1] * -1

df.apply(func, axis=1)
a    (400, 22)
b     (400, 7)
c       (2, 3)
d      (2, -1)
e      (2, -5)
f      (2, -9)
dtype: object
  • 如果 reult_type="broadcast",那么原 column 和 index 名会继承到新生成的数据中;没有的话本例column0-3
  • 因为广播,这个return必须凑齐colunm个数,即使没变化,也要写上,不然报错
print("df:\n",df)

def func(x):
    return x[0] * 2, x[1] * -1,x[2] ,x[3] 
print("-----")
print(df.apply(func, axis=1, result_type='expand'))
df.apply(func, axis=1, result_type='broadcast')
df:
      A   B   C   D
a  200 -22 -20 -18
b  200  -7  -6  -5
c    1  -3  -2  -1
d    1   1   2   3
e    1   5   6   7
f    1   9  10  11
-----
     0   1   2   3
a  400  22 -20 -18
b  400   7  -6  -5
c    2   3  -2  -1
d    2  -1   2   3
e    2  -5   6   7
f    2  -9  10  11
ABCD
a40022-20-18
b4007-6-5
c23-2-1
d2-123
e2-567
f2-91011
def func(r):
    return r[2] * 4

last_row = df.apply(func, axis=0)
print("last_row:\n", last_row)

df.iloc[2, :] = last_row
print("\ndf:\n", df)
last_row:
 A    16
B   -48
C   -32
D   -16
dtype: int64

df:
      A   B   C   D
a  200 -22 -20 -18
b  200  -7  -6  -5
c   16 -48 -32 -16
d    1   1   2   3
e    1   5   6   7
f    1   9  10  11

注意:

  • 默认是对列进行操作,也就是 axis=1,是按行来操作的,是对每行的第3个数操作,所以输出你看这变化是
  • axis=0对列的第3个数操作,反而输出变化的是 这个别弄反了

17.2 文字处理

17.2.1 格式化字符

  • str.upper(); str.lower(); 全大写全小写
  • str.len():长度
  • str.strip(); str.lstrip(); str.rstrip()去掉两边空格。去掉左空格、有空格
  • str.split()数据用什么分割

我们用这些处理字符的时候,你要确保 Series 或者 DataFrame 的 dtype="string"

  • .dtype:看类型
  • .asdtype:改类型
pd_not_s = pd.Series(
    ["A", "B", "C", "Aaba", "Baca", "CABA", "dog", "cat"],
)
print("pd_not_s type:", pd_not_s.dtype)
pd_s = pd_not_s.astype("string")
print("pd_s type:", pd_s.dtype)
pd_not_s type: object
pd_s type: string

用法很简单,举几个简单的例子:

# 【例子1】全部大写
print("\npandas:\n", pd_s.str.upper())
pandas:
 0       A
1       B
2       C
3    AABA
4    BACA
5    CABA
6     DOG
7     CAT
dtype: string
#【例子2】每个字符串数据长度
print("\npandas len:\n", pd_s.str.len())
pandas len:
 0    1
1    1
2    1
3    4
4    4
5    4
6    3
7    3
dtype: Int64
# 【例子3】从新有需要的字符切割数据
py_s = ["a_b_c", "jill_jesse", "frank"]
pd_s = pd.Series(py_s, dtype="string")

print("\npandas split:\n", pd_s.str.split("_"))
pandas split:
 0        [a, b, c]
1    [jill, jesse]
2          [frank]
dtype: object
  • **【和python比较】**我们用python,一般形式是这样的(除了大小写)
print("python len:\n", [len(s) for s in py_s])
print("python split:\n", [s.split("_") for s in py_s])
python len:
 [5, 10, 5]
python split:
 [['a', 'b', 'c'], ['jill', 'jesse'], ['frank']]
# 加一个 result_type="expand",将拆分出来的结果放到不同的 column 中去
pd_s.str.split("_", expand=True)
012
0abc
1jilljesse<NA>
2frank<NA><NA>

17.2.2 正则方案

我们用 str.contains() str.match() 来确认它真的找到了匹配文字

  • str.contains() :有就识别出来
  • str.match():完全匹配

pattern = r"[0-9][a-z]"
s = pd.Series(["1", "1a", "11c", "abc"], dtype="string")
s.str.contains(pattern)
0    False
1     True
2     True
3    False
dtype: boolean
- ` r"[0-9][a-z]"`:这里面【条件1】【条件2】两个条件都要有。
- `11c`识别出来了`1c`,用`contains`是`True`,用`match`是`False`
s.str.match(pattern)
0    False
1     True
2    False
3    False
dtype: boolean

17.3 异常数据处理

17.3.1 找到NaN数据

pd.isna(), pd.notna()

import pandas as pd
import numpy as np

df = pd.DataFrame([[1, None],[np.nan, 4]])
df
01
01.0NaN
1NaN4.0
#找NaN数据
df.isna()
01
0FalseTrue
1TrueFalse

【找不是NaN数据】 df.notna()或者~df.isna()

df.notna()

01
0TrueFalse
1FalseTrue

17.3.2 处理NaN

  • df.dropna():移除
  • df.fillna():填充
  • df.clip():不符合范围的填充
df = pd.DataFrame({
    "a": [1, None, 3], 
    "b": [4, 5, 6]
})
df
ab
01.04
1NaN5
23.06
- 移除,**默认**是`axis=0`,列方向改变;
df.dropna()
ab
01.04
23.06
df.dropna(axis=1)
b
04
15
26
  • df.fillna():填充
# 在a标签上做了平均,这里排除掉了没有意义的值
a_mean = df["a"].mean()
new_col = df["a"].fillna(a_mean)
df["a"] = new_col
df
ab
01.04
12.05
23.06
  • 有规律的值,也可以做一些运算
# b是的4倍
df = pd.DataFrame({
    "a": [1, None, 3, None], 
    "b": [4, 8, 12, 12]
})
a_nan = df["a"].isna()
a_new_value = df["b"][a_nan] / 4
print("返回了索引和值:\n",a_new_value)


new_col = df["a"].fillna(a_new_value)
df["a"] = new_col
df
返回了索引和值:
 1    2.0
3    3.0
Name: b, dtype: float64
ab
01.04
12.08
23.012
33.012
`["b"][a_nan] / 4`:b中是NaN的值/4
  • df.clip():不符合范围的填充;

有些值大的离谱小的离谱,这些超出的值会给一个上下的阈值

df = pd.DataFrame({
    "a": [1, 1, 2, 1, 2, 40, 1, 2, 1],
})
df["a"] = df["a"].clip(lower=0, upper=3)
df
a
01
11
22
31
42
53
61
72
81

17.4 时间数据

17.4.1 读时间序列

  • pd.to_datetime():pandas数据中有时间,但是它不知道是时间序列 所以要转换一下
import pandas as pd

df = pd.DataFrame({
    "time": ["2022/03/12", "2022/03/13", "2022/03/14"],
    "value": [1,2,3]
})
print(df)
         time  value
0  2022/03/12      1
1  2022/03/13      2
2  2022/03/14      3
# 这一列 是时间序列
pd.to_datetime(df["time"])
0   2022-03-12
1   2022-03-13
2   2022-03-14
Name: time, dtype: datetime64[ns]
  • 任意形式都可以,个性化识别format

    • 所有前面都加个%如%% 比配一个 %;%S 是秒
    • 比如喜欢用 月@日@年%%秒|时|分
pd.to_datetime(
    [
        "1@21@2022%%11|11|32", 
        "12@01@2022%%44|02|2", 
        "4@01@2022%%14|22|2"
    ],
    format="%m@%d@%Y%%%%%S|%H|%M"
)
DatetimeIndex(['2022-01-21 11:32:11', '2022-12-01 02:02:44',
               '2022-04-01 22:02:14'],
              dtype='datetime64[ns]', freq=None)

17.4.2 自建时间序列datetime

  1. 【类似于range】:pd.date_range(start, end)
  • freq="48h":间隔时间。(没有)默认是一天
import datetime

# 设置成时间序列 默认是年月日
start = datetime.datetime(2022, 3, 12)
end = datetime.datetime(2022, 3, 18)

index = pd.date_range(start, end, freq="48h")
index
DatetimeIndex(['2022-03-12', '2022-03-14', '2022-03-16', '2022-03-18'], dtype='datetime64[ns]', freq='48H')
  • periods=:从开始到结束 平均去几个值
print("\n\npd.date_range(start, end, periods=5)\n",
    pd.date_range(start, end, periods=5)
)
pd.date_range(start, end, periods=5)
 DatetimeIndex(['2022-03-12 00:00:00', '2022-03-13 12:00:00',
               '2022-03-15 00:00:00', '2022-03-16 12:00:00',
               '2022-03-18 00:00:00'],
              dtype='datetime64[ns]', freq=None)

17.4.3 选取时间data_range

  1. 做了一个在时间上随机生成正态分布的值

start = datetime.datetime(2022, 3, 1)
end = datetime.datetime(2022, 3, 23)

rng = pd.date_range(start, end)
ts = pd.Series(np.random.randn(len(rng)), index=rng)

ts
2022-03-01    0.471139
2022-03-02   -1.101305
2022-03-03   -0.544299
2022-03-04    1.244004
2022-03-05   -1.594690
2022-03-06    1.686098
2022-03-07   -0.613820
2022-03-08   -2.399893
2022-03-09    1.132414
2022-03-10   -1.198595
2022-03-11    0.779643
2022-03-12    0.265703
2022-03-13   -0.545246
2022-03-14    1.518926
2022-03-15    0.255980
2022-03-16    0.876557
2022-03-17   -0.599384
2022-03-18   -0.351991
2022-03-19    0.033286
2022-03-20    0.085700
2022-03-21    0.421871
2022-03-22   -1.981706
2022-03-23    0.209435
Freq: D, dtype: float64
  • index=rng 这里面把时间放在了index上
  1. 在这个时间序列下,可以利用各种方式 切片,直接输入等来取一些值
#可分片
ts[1:8].plot()
<AxesSubplot:>

在这里插入图片描述

import datetime

t1 = datetime.datetime(2022, 3, 12)
t2 = datetime.datetime(2022, 3, 18)
ts[t1: t2].plot()
<AxesSubplot:>

在这里插入图片描述

ts["2022-03-12": "2022-03-18"].plot()
<AxesSubplot:>

在这里插入图片描述

17.4.4 时间运算pd.Timedelta .dayofyear .strftime

  1. 比如我想复制一份这周的表格,给下周用, 我就直接将这个月 copy 过来,然后日期上加一周时间。
  • Timedelta 是一种用于时间加减的时间单位
rng = pd.date_range("2022-01-01", "2022-01-07")
rng + pd.Timedelta(weeks=1)
DatetimeIndex(['2022-01-08', '2022-01-09', '2022-01-10', '2022-01-11',
               '2022-01-12', '2022-01-13', '2022-01-14'],
              dtype='datetime64[ns]', freq='D')
 `weeks`参数,还可以用 `days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds` 这些
  • 算这是今年第几天.dayofyear
import pandas as pd
rng = pd.date_range("2022-2-08","2022-2-14")
rng.dayofyear
Int64Index([39, 40, 41, 42, 43, 44, 45], dtype='int64')

除此之外,还有:rng.dayofweek; rng.weekofyear; rng.weekday

  • .strftime:输出形式切换
rng.strftime("%m/%d/%Y")
Index(['02/08/2022', '02/09/2022', '02/10/2022', '02/11/2022', '02/12/2022',
       '02/13/2022', '02/14/2022'],
      dtype='object')
  • .day_name(); .month_name():看是周几或者那个月
rng.day_name()
Index(['Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday',
       'Monday'],
      dtype='object')

17.4.5 时区

  • .tz_localize:时区初始化
#方法1 
s = pd.to_datetime(
    ["2022/03/12 22:11", "2022/03/12 12:11", "2022/03/12 2:11"]
)
s_us = s.tz_localize("America/New_York")
s_us
DatetimeIndex(['2022-03-12 22:11:00-05:00', '2022-03-12 12:11:00-05:00',
               '2022-03-12 02:11:00-05:00'],
              dtype='datetime64[ns, America/New_York]', freq=None)
# 方法2 在创建时间数据时候
rng = pd.date_range(
    "2022-01-08", "2022-01-11", 
    tz="America/New_York")
rng
  • .tz_convert:时区转换
s_cn = s_us.tz_convert("Asia/Shanghai")
s_cn
DatetimeIndex(['2022-03-13 11:11:00+08:00', '2022-03-13 01:11:00+08:00',
               '2022-03-12 15:11:00+08:00'],
              dtype='datetime64[ns, Asia/Shanghai]', freq=None)

17.5 绘制图表

  • 散点图 scatter
  • 折线图 plot
  • 条形图 .plot.bar()
  • 分布图 .plot.hist()
  • 饼图 plot.Pie
  • 面积图 plot.area

用法就是 df.图片名字.什么图

17.5.1 散点图Scatter

  • c: 对于这组数据中每个(x,y)数据点的颜色值
  • s: 画点的大小(size)
  • alpha:不透明度
  • cmap:colormap,你可以在这里找到非常丰富的案例.我这里觉得应该是选哪个调色板或色彩格式
import numpy as np
import pandas as pd

n = 10    # data size
df = pd.DataFrame({
    "x": np.random.normal(0, 1, n),
    "y": np.random.normal(0, 1, n), 
})
#color = np.arctan2(df["y"], df["x"])
df.plot.scatter(x="x", y="y", c=color, s=60, alpha=.5, cmap="rainbow")
<AxesSubplot:xlabel='x', ylabel='y'>

在这里插入图片描述

17.5.2 散点图 plot.Scatter()

n = 20    # data size
x = np.linspace(-1, 1, n)
y1 = x * -1 - 0.1 + np.random.normal(0, 0.3, n)
y2 = x * 2 + 0.4 + np.random.normal(0, 0.3, n)
df = pd.DataFrame({
    "x": x,
    "y1": y1,
    "y2": y2, 
})
df.plot(x="x", y=["y1", "y2"], alpha=.9)
<AxesSubplot:xlabel='x'>

在这里插入图片描述

更改的地方:透明度改成了9

17.5.3 条形图Bar

df = pd.DataFrame(np.random.rand(5, 3), columns=["a", "b", "c"])
print(df)
df.plot.bar()
          a         b         c
0  0.768000  0.963485  0.460891
1  0.824841  0.599105  0.607710
2  0.372849  0.541759  0.114071
3  0.278834  0.283976  0.661167
4  0.570884  0.638697  0.581616





<AxesSubplot:>

在这里插入图片描述

  • 放一起看stacked=True
df.plot.bar(stacked=True)
<AxesSubplot:>

在这里插入图片描述

  • .plot.barh()横竖轴调换
df.plot.barh()
<AxesSubplot:>

在这里插入图片描述

17.5.4 分布图 plot.hist()

分布图在机器学习和统计学中非常重要,我经常画分布图,比如要画 神经网络的参数分布可视化。 又或者是 GAN 生成对抗网络当中的数据分布。

df = pd.DataFrame(
    {
        "a": np.random.randn(1000) + 1,
        "b": np.random.randn(1000),
        "c": np.random.randn(1000) - 4,
    }
)

df.plot.hist(alpha=0.3, bins=60)
<AxesSubplot:ylabel='Frequency'>

在这里插入图片描述

bins 柱状体的数量

17.5.5 饼图plot.Pie

df = pd.DataFrame(
    {
        "bigBoss": np.random.rand(4),
        "smallBoss": np.random.rand(4),
    },
    index=["meeting", "supervise", "teaching", "team building"], 
)
df.plot.pie(subplots=True, figsize=(9,9), legend=False)
array([<AxesSubplot:ylabel='bigBoss'>, <AxesSubplot:ylabel='smallBoss'>],
      dtype=object)

在这里插入图片描述

subplots=True, figsize=(9,9), legend=False:

  • 这里是两组数据,要加subplots,是分开画意思;
  • legend 是用来确定要不要输出图例的。也就是有个图 来说什么颜色代表什么

17.5.6面 积图plot.area()

df = pd.DataFrame(
    np.random.rand(10, 4), 
    columns=["a", "b", "c", "d"]
)
df.plot.area()

<AxesSubplot:>

在这里插入图片描述

如果你不想上下堆砌在一起观看,而是有统一的一个起点,那可以用这个参数 stacked=False

df.plot.area(stacked=False)
<AxesSubplot:>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/165946.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI中Deepfake的部分研究前沿与文献综述

AI中Deepfake的部分研究前沿与文献综述一、研究现状二、典型算法&#xff1a;三、存在问题四、未来的研究热点参考文献&#xff1a;一、研究现状 由于Deepfake其潜在的安全威胁&#xff0c;它已经引起了学术界和工业界的研究兴趣。为了减轻这种风险&#xff0c;人们提出了许多…

【Nginx01】Ngnix入门

1.版本 Nginx开源版Nginx plus商业版OpenrestyTengine 2.Nginx开源版安装 2.1下载 2.2编译安装 如果本身没有c语言的编译器 命令&#xff1a; yum install -y gcc 解压Nginx 命令&#xff1a; tar -zxvf nginx-1.22.1.tar.gz 安装perl库 命令&#xff1a; yum install -y p…

广告业务系统 之 敏捷交付 —— “基于 Docker 容器同机部署”

文章目录广告业务系统 之 敏捷交付 —— “基于 Docker 容器同机部署”服务 Docker 构建及部署代码支持服务打包&构建服务部署广告业务系统 之 敏捷交付 —— “基于 Docker 容器同机部署” 服务 Docker 构建及部署 在 ADX 系统中&#xff0c;全链路涉及 大大小小的微服务…

SpringBoot+VUE前后端分离项目学习笔记 - 【22 权限菜单 下】

本节主要实现用户角色菜单分配功能&#xff0c;并且实现前端的动态渲染以及动态路由 数据库&#xff1a; sys_user表增加role字段; sys_role增加flag字段;sys_menu表增加page_path字段。前两者表示用户角色标识&#xff0c;后者是前端页面vue路径&#xff0c;用以实现动态路由 …

verilog学习笔记- 13)呼吸灯实验

目录 简介&#xff1a; 实验任务&#xff1a; 硬件设计&#xff1a; 程序设计&#xff1a; 下载验证&#xff1a; 简介&#xff1a; 呼吸灯采用 PWM 的方式&#xff0c;在固定的频率下&#xff0c;通过调整占空比的方式来控制 LED 灯亮度的变化。PWM即脉冲宽度调制&#x…

2021年帆软杯一等奖作品 |《基于数据可视化的中国编程岗位需求分析》

# 作品主题 #——基于数据可视化的中国编程岗位需求分析一、团队介绍 团队名称&#xff1a;汪汪队立大功 团队成员&#xff1a;乔好鑫、许春阳、窦晨辉 指导老师&#xff1a;施金妹 团队的三位成员均是来自于海南科技职业大学大数据技术与应用专业&#xff0c;专业课主修了pyt…

SpringBoot+2次MD5登录密码加密+MyBatisPlus+Thymeleaf+Bootstrap简单实现登录功能,一文轻松搞定!

这里写目录标题一、演示GIF二、开发前期准备1、数据库2、依赖POM.XML3、idea结构目录三、后端1、实体类2、mapper接口3、mapper.xml4、Servicce接口5、Impl实现6、Controller控制器7、全局异常处理类GlobalExceptionGlobalExceptionHandler8、工具类MD5UtilUUIDUtilCookieUtilV…

消息批处理端口说明

为满足用户需要对多文件做批处理的需求&#xff0c;在2022版本的知行之桥中&#xff0c;开发人员开发设计了3个新的端口&#xff0c;分别是Batch Create 端口、Batch Merge 端口和Batch Split 端口。 功能是对传入端口的消息做批处理&#xff0c;使得消息可以在批处理组中分组在…

mybatis-plus分布式id重复问题

问题起因 k8s 部署的一个服务的两个节点集群 最近频繁报错&#xff0c;数据库主键ID重复&#xff0c;导致数据插入报错 问题定位 还在定位。。。。 问题解决 解决办法主要有两个 指定mybatis-plus workerId dataCenterId 全局配置 #注意这里使用的随机策略 随机区间 …

智能边缘网关

背景介绍 调研发现&#xff0c;数字经济为工业物联网、智能交通以及智慧医疗等场景提出了新的解决方案。工程师利用传感器边缘网关云服务器的系统架构&#xff0c;通过大数据及人工智能算法进行辅助决策&#xff0c;最终为工业设备赋能&#xff0c;提高加工生产效率。近年来&am…

sqli-labs 11~14 多命通关攻略(报错注入)

sqli-labs 11~14 多命通关攻略&#xff08;报错注入&#xff09;描述判断注入类型返回结果错误输入总结符号注释判断返回结果中的列数判断返回结果中的列数为 1判断返回结果中的列数为 2报错注入通过报错注入爆破数据库中的表名通过报错注入爆破数据库中的表名&#xff08;逻辑…

【高阶数据结构】封装unordered_map 和 unordered_set

&#x1f308;欢迎来到数据结构专栏~~封装unordered_map 和 unordered_set (꒪ꇴ꒪(꒪ꇴ꒪ )&#x1f423;,我是Scort目前状态&#xff1a;大三非科班啃C中&#x1f30d;博客主页&#xff1a;张小姐的猫~江湖背景快上车&#x1f698;&#xff0c;握好方向盘跟我有一起打天下嘞&…

【北京理工大学-Python 数据分析-3.1Pandas库的基本使用】

Pandas库的引用&#xff0c;常用两大功能Series(一维&#xff09;和DataFrame&#xff08;二维和多维&#xff09; Pandas是Python第三方库&#xff0c;提供高性能易用数据类型的分析工具。 Pandas基于NumPy实现&#xff0c;常与NumPy和Matplotlib一起使用。 Numpy和Pandas的…

SpringCloud-Netflix学习笔记03——什么是Eureka

什么是Eureka Eureka&#xff1a;怎么读&#xff1f; Netflix 在设计Eureka 时&#xff0c;遵循的就是AP原则。 1、CAP原则又称CAP定理&#xff0c;指的是在一个分布式系统中 2、一致性&#xff08;Consistency&#xff09; 3、可用性&#xff08;Availability&#xff09; 4、…

详细实例说明+典型案例实现 对动态规划法进行全面分析 | C++

第三章 动态规划法 目录 ●第三章 动态规划法 ●前言 ●一、动态规划法是什么&#xff1f; 1.简要介绍 2.生活实例 ●二、动态规划法对斐波那契数列的优化 1.优化方法 2.优化核心代码片段 3.代码实现以及结果展示 ●三、动态规划法的典型案例——最短总距离 …

c语言文件操作(万字解析)

c语言文件操作一.文件的打开与关闭1.文件指针-FILE*2.文件的打开与关闭二.文件的顺序读写1.字符操作函数-fgetc和fputc2.字符串操作函数-fgets和fputs3.格式化函数-fprintf和fscanf4.二进制函数-fread和fwrite5.对比一组函数三.文件的随机读写1.fseek和ftell2.调整指针-rewind四…

Python NumPy 数组索引

前言NumPy&#xff08;Numerical Python的缩写&#xff09;是一个开源的Python科学计算库。使用NumPy&#xff0c;就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数&#xff0c;涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍Python NumPy 数组索引…

动态内容管理

这期我们来看动态内存管理的相关知识&#xff0c;话不多说&#xff0c;我们来看今天的正题 目录 1.为什么要有动态内存管理&#xff1f; 2.动态内存函数的介绍 2.1.malloc和free 2.2.calloc 2.3.realloc 3. 常见的动态内存错误 3.1 对NULL指针的解引用操作 3.2 对动态开…

Pytorch DataLoader中的num_workers (选择最合适的num_workers值)

一、概念 num_workers是Dataloader的概念&#xff0c;默认值是0。是告诉DataLoader实例要使用多少个子进程进行数据加载(和CPU有关&#xff0c;和GPU无关) 如果num_worker设为0&#xff0c;意味着每一轮迭代时&#xff0c;dataloader不再有自主加载数据到RAM这一步骤&#xff0…

滑动列表中使用粒子特效层级问题

前言 前面几个月疯狂堆功能,现在开始疯狂加动效,每次一说到动效就脑壳痛,还不如让我写功能。这不,今天又遇到问题了。滑动列表中mask粒子特效问题遮挡。 情况1 步骤1:使用粒子特效的层级应该>当前ui层级。 例如:当前界面所在层级为2000,其上的粒子特效至少为2001。…