netstat -lpn -4 -6
Views: 0
netstat -lpn -4 -6
Views: 0
numpy里面自带了几种抽样算法,但都是随机抽样,我这里要做的是等比连续抽样,就是对原始数据从前到后按固定的间隔固定的顺序去抽样数据。
方法一:
把列表分成n个子组,从每个子组中再抽取一个数作为样本
def evenly_divide_list(lst, num_groups):
"""按顺序分隔列表为指定数量的子组
Args:
lst (list): 列表
num_groups (int): 分隔次数
Returns:
list: 返回子列表的集合
"""
quotient, remainder = divmod(len(lst), num_groups)
group_sizes = [quotient] * num_groups
for i in range(remainder):
group_sizes[i] += 1
groups = []
i = 0
for size in group_sizes:
groups.append(lst[i:i + size])
i += size
return groups
data = [1, 2, 4, 5]
count = 3
sample_group = evenly_divide_list(data, count)
for i in range(len(sample_group)):
print(sample_group[i][0])
方法二:
对列表索引分成固定的间隔然后进行进行四舍五入
def extract_elements(lst, num_elements):
"""按顺序均匀抽样元素
Args:
lst (list): 列表
num_groups (int): 抽样次数
Returns:
list: 返回抽样元素的集合
"""
if num_elements > len(lst):
return lst
step = len(lst) / num_elements
return [lst[round(i * step)] for i in range(num_elements)]
data = [1, 2, 4, 5]
count = 3
sample_group = extract_elements(data, count)
for i in range(len(sample_group)):
print(sample_group[i])
第一种方法是把不能整分的元素全部加到最前面几个组中,这样前面的组就比后面的组抽样间隔更大
第二种方法则是把不能等分的元素按四舍五入法分散在不同的段中,这种方法显然抽样更均匀,而且方法一多了一个数组切分过程,算法复杂度更大,所以推荐用方法二。
Views: 4
方差和标准差都是用来反映样本差异大小的
方差的计算公式:
标准差的计算公式:
标准差就是方差的开平方,求方差的目的就是为了得到标准差,方差是求标准差过程的中间值。数学符号是:σ
正态分布的计算公式:
其中只有两个变量,一个是中间值,也就是总体的平均值,样本均数,总值均值,用mean表示,数学符号是μ。另一个值就是方差(这里用方差不用标准差应该只是计算方便),数学符号是
Python用numpy生成符合正态分布的随机数:
random.normal(loc=0.0, scale=1.0, size=None)
loc就是中间值,scale是标准差,szie是数据结构,如果整数就是生成几条数据,如果元组就是就数组的维数
Views: 27
centos7自带的gcc和openssl版本过低无法成功编译python3.12,所以需要另外安装gcc11和编译openssl1.11。
Views: 14
swapoff -a
lvresize /dev/pve/swap -L 32G
mkswap /dev/pve/swap
swapon -a
新建swap分区
lvcreate ubuntu-vg -L 16G -n swap
mkswap /dev/ubuntu-vg/swap
echo "/dev/ubuntu-vg/swap swap swap defaults 0 0" >> /etc/fstab
swapon -a
Views: 53
<!doctype html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title>鼠标轨迹</title>
<style>
.stage {
width: 100%;
}
.title {
margin: 0;
}
.track-monitor {
background-color: rgb(242, 241, 241);
padding: 0;
border: 2px solid grey;
margin-right: 5px;
}
.track-coordinate {
background-color: grey;
color: white;
height: 25px;
line-height: 25px;
font-size: 12px;
margin: 5px 0px;
}
.track-coordinate-list {
font-size: 12px;
width: 100%;
word-break: break-word;
border: 2px solid grey;
margin: 5px 0px;
min-height: 100px;
padding: 2px 2px;
}
</style>
<script>
var isDrag = false; //是否拖拽
var count = 0;
window.addEventListener('load', function () {
var pad = document.getElementById('pad');
var stage = document.getElementById('stage');
var monitor = document.getElementsByClassName('track-monitor')[0];
var coordinate = document.getElementsByClassName('track-coordinate')[0];
var clist = document.getElementsByClassName('track-coordinate-list')[0];
var clist2 = document.getElementsByClassName('track-coordinate-list')[1];
var reset = document.getElementsByTagName('button')[0];
var context = pad.getContext('2d');
var ctx = context;
var cset = [];
var cset2 = [];
var padHeight = 500;
var fixSize = function () {
monitor.width = stage.clientWidth;
context.strokeStyle = 'grey';
context.lineWidth = 1;
context.setLineDash([8, 8]);
context.beginPath();
for (var i = padHeight / 10; i <= padHeight; i += padHeight / 10) {
if (i < padHeight) {
ctx.moveTo(0, i)
ctx.lineTo(stage.clientWidth, i);
ctx.stroke();
}
ctx.fillStyle = "red";
ctx.font = "12px 宋体";
ctx.fillText(i + ', ' + i / padHeight * 100 + '%' + ';' + i, 3, i - 2);
}
for (var i = stage.clientWidth / 10; i < stage.clientWidth-1; i += stage.clientWidth / 10) {
ctx.moveTo(i, 0)
ctx.lineTo(i, stage.clientHeight);
ctx.stroke();
ctx.fillStyle = "red";
ctx.font = "12px 宋体";
ctx.fillText(parseInt(i) + ', ' + parseInt(i / stage.clientWidth * 100) + '%', i - 60, 12);
}
ctx.fillStyle = "red";
ctx.font = "12px 宋体";
ctx.fillText(parseInt(i) + ', ' + parseInt(i / stage.clientWidth * 100) + '%', i - 60, 12);
context.closePath();
context.setLineDash([]);
ctx.moveTo(0, 0);
};
window.addEventListener('resize', function () { fixSize(); });
pad.addEventListener('mousemove', function (e) {
if (isDrag) {
count++;
// 绘制轨迹
context.setLineDash([]);
context.strokeStyle = 'black';
context.lineTo(e.offsetX, e.offsetY);
context.lineWidth = 2;
context.stroke();
// 打印坐标
coordinate.innerHTML = count;
cset.push(e.offsetY / padHeight);
clist.textContent = cset.join(',');
cset2.push(e.offsetX + ':' + e.offsetY );
clist2.textContent = cset2.join(',');
}
});
document.addEventListener('mousedown', function (e) {
isDrag = true;
context.beginPath();
})
document.addEventListener('mouseup', function (e) {
isDrag = false;
context.closePath();
})
reset.addEventListener('click', function () {
fixSize();
cset = [];
cset2 = [];
clist.innerHTML = '';
clist2.innerHTML = '';
coordinate.textContent = '在方块中滑动鼠标';
count = 0;
});
fixSize();
});
</script>
</head>
<body>
<div class="stage" id="stage">
<p class="title">画板</p>
<canvas id="pad" height="500" class="track-monitor"></canvas>
<button type="button">清空</button>
<p class="title">轨迹坐标点数</p>
<div class="track-coordinate">在方块中滑动鼠标</div>
<p class="title">Y轴相对于顶部的百分比</p>
<div class="track-coordinate-list" id="percent"></div>
<p class="title">轨迹坐标</p>
<div class="track-coordinate-list" id="coordinate"></div>
</div>
</body>
</html>
Views: 115
默认情况下如果数值非常大或非常小会显示为科学计数法,用f-string可以指定数字的显示格式。
参考这里的说明:https://docs.python.org/zh-cn/3/library/string.html#formatspec
f或F类型会用定点数输出数值,不会用科学计数法显示数字。用法如下:
f'{num:f}’ 根据内容自动确定显示位数
f'{num:5f}’ 最小总宽度显示为5位,不足部分在左边用空格填充,最大宽度则由内容决定
f'{num:05f}’ 最小总宽度显示为5位,不足部分在左边用0填充,最大宽度则由内容决定
f'{num:.2f}’ 小数点后最少显示5位,不足部分在右边用0填充,超出部分四舍五入
f'{num:5.2f}’ 总宽度最少显示5位,不足部分在左边用空格填充,最大宽度则由内容决定,小数点后最少显示2位,不足部分在右边用0填充,超出部分四舍五入
f'{num:05.2f}’ 总宽度最少显示5位,不足部分在左边用0填充,最大宽度则由内容决定,小数点后最少显示2位,不足部分在右边用0填充,超出部分四舍五入
from decimal import Decimal
num = Decimal("8.355")
print(f'{num:f}')
print(f'{num:5f}')
print(f'{num:05f}')
print(f'{num:.5f}')
print(f'{num:5.2f}')
print(f'{num:05.2f}')
输出的结果为:
8.355
8.355
8.355
8.35500
8.36
08.36
注意:
python的四舍五入采用的是四舍六入五成双,具体可以看这篇文章:
https://www.cnblogs.com/gxfaxe/p/14970856.html
f-string的更多用法可以参考这里:
https://zhuanlan.zhihu.com/p/668918715
Views: 104
php occ files:scan --generate-metadata --all
方法2
cd /var/www/nextcloud
rm -rf data/appdata_ocfklnu4oq6f/preview/
# 里具体appdata目录可能有差异
php occ files:scan-app-data
我是用的第1种方法,第2种方法没有试
Views: 67