我在Python和Bokeh技术方面相对较新。我的目标实际上是能够在浏览器中显示包含数百万个点(例如约500万个)的折线图。我认为实际的浏览器无法处理如此大量的数据。这就是为什么我要尝试实施下采样算法以根据用户缩放来调整点数的原因。
散景技术似乎是我需要的技术。确实,我在YouTube上观看了以下视频,该视频提供了一个效果很好的下采样示例:https : //www.youtube.com/watch?v=kPknmEwQ3Rc
这就是我要为我的项目实施的。因此,我在Bokeh网站上阅读了很多《用户指南》,但“下采样”部分是空的,文档似乎并不完整:http://docs.bokeh.org/en/0.10.0/docs/user_guide /server.html#downsampling-with-server
我在GitHub等互联网上阅读了一些帖子,有人谈论了使用进行下采样的Bokeh示例bokeh-server。不幸的是,我无法在Internet上恢复任何此类示例。我发现的所有链接均无效。这就是为什么我在这里发布。我想知道是否有人会使用Bokeh或共享链接进行下采样的工作项目。
先感谢您 !
我一直在尝试让 PIL 很好地对图像进行下采样时遇到问题。在这种情况下,目标是让我的网站在需要不同大小时自动下采样->缓存原始图像文件,从而消除维护同一图像的多个版本的痛苦。但是,我没有任何运气。我试过了:
image.thumbnail((width, height), Image.ANTIALIAS)
image.save(newSource)
Run Code Online (Sandbox Code Playgroud)
和
image.resize((width, height), Image.ANTIALIAS).save(newSource)
Run Code Online (Sandbox Code Playgroud)
和
ImageOps.fit(image, (width, height), Image.ANTIALIAS, (0, 0)).save(newSource)
Run Code Online (Sandbox Code Playgroud)
并且所有这些似乎都执行最近邻下采样,而不是按应有的方式对像素进行平均因此它将图像变成
http://www.techcreation.sg/media/projects//software/Java%20Games/images/Tanks3D%20Full.png
到
http://www.techcreation.sg/media/temp/0x5780b20fe2fd0ed/Tanks3D.png
这不是很好。有没有其他人遇到过这个问题?
我有两个关于OpenTSDB下采样的问题.
第一个是我想知道是否有人知道OpenTSDB在计算下采样时是采用最后一个包含端点还是独占端点,还是计算两次结束数据点?
例如,如果我的时间间隔是下午12:30至下午1:30,并且我从下午12:29:44开始每5分钟获得一次DP,并且我的下采样间隔是每10分钟一次的总和,系统是否从12:30开始接收DP -12:39并将它们相加,12:40-12:49并将它们相加,或者从12:30-12:40,然后从12:40-12:50等取出DP.是的,我知道我的数据已关闭15秒,但我无法控制.
我试图手工计算,但我的数据并没有帮助我.我正在计算的数字并没有加起来,也没有与图表显示的数字相匹配.我无法访问将数字推入OpenTSDB的系统,因此无法设置虚拟数据进行检查.
第二个问题是下采样如何根据我的时间范围和下采样间隔在图表上绘制其点?我将下采样设置为总共10分钟的块.我将我的范围设定为下午12:30至下午1:30.该图显示了下采样图的第一个点,从下午12:35开始.这符合逻辑.
我将范围更改为12:24 pm-1:29pm,并预计第一个点将在12:30开始,但显示的第一个点是下午12:25.
希望有人能为我回答这些问题.与此同时,我将继续尝试在我的系统中查找一些数据,以帮助显示/证明下采样应该如何工作.
在此先感谢您的帮助.
我发出以下命令:
gs \
-o downsampled.pdf \
-sDEVICE=pdfwrite \
-dDownsampleColorImages=true \
-dColorImageResolution=180 \
-dColorImageDownsampleThreshold=1.0 \
Run Code Online (Sandbox Code Playgroud)
并得到以下错误:
Subsample filter does not support non-integer downsample factor (1.994360)
Failed to initialise downsample filter, downsampling aborted
Run Code Online (Sandbox Code Playgroud)
(在某些页面上)
和:
Subsample filter does not support non-integer downsample factor (2.000029)
Failed to initialise downsample filter, downsampling aborted
Run Code Online (Sandbox Code Playgroud)
最初我试图将采样降低到 150dpi,这给出了因子为 (2.40????) 的错误,这意味着多个错误,其中不同页面的最后几位数字不同。所以我猜图像大约是 150*2.4 = 360 dpi。所以我尝试下采样到 180。但似乎图像都略有偏差?
我试图通过抽取或提取每个第X项来对长数组进行下采样.
这是我的数组扩展所得到的:
func downsampled(to threshold: Int) -> [T] {
// Validate that threshold falls in valid range
guard !isEmpty, 1...count ~= threshold else { return Array(self) }
let skip = (count / threshold) + 1
var index = 0
var items = [T]()
while index < count {
items.append(self[index])
index += skip
}
return items
}
Run Code Online (Sandbox Code Playgroud)
我期待原始数组中的50-100k项目,并且可能会下采样到屏幕的原生边界宽度(500-1k点).
有没有更简洁或有效的方法来做到这一点?
我正在尝试使用下面显示的以下函数来清理和缩减音频采样。我陷入了这个我缺乏理解的错误。有人愿意解释一下并希望帮助我解决这个问题吗?
我可以看到它与 wavio 功能有关,并且无法读取文件。
代码如下:
def envelope(y, rate, threshold):
mask = []
y = pd.Series(y).apply(np.abs)
y_mean = y.rolling(window=int(rate/20),
min_periods=1,
center=True).max()
for mean in y_mean:
if mean > threshold:
mask.append(True)
else:
mask.append(False)
return mask, y_mean
def downsample_mono(path, sr):
obj = wavio.read(path)
wav = obj.data.astype(np.float32, order='F')
rate = obj.rate
try:
tmp = wav.shape[1]
wav = to_mono(wav.T)
except:
pass
wav = resample(wav, rate, sr)
wav = wav.astype(np.int16)
return sr, wav
def save_sample(sample, rate, target_dir, fn, ix):
fn = fn.split('.wav')[0]
dst_path = os.path.join(target_dir.split('.')[0], fn+'_{}.wav'.format(str(ix))) …Run Code Online (Sandbox Code Playgroud) 我有一个相对较高的矩阵Q(100X500000),我想对它进行下采样.通过下采样,我将用一个例子来解释.
设Q =
1 4 9
3 2 1
Run Code Online (Sandbox Code Playgroud)
和缩减样本大小= n.我想从一个总和(Q)= 20个球中抽出n个球,每个球用6种方式中的1种颜色对应于矩阵的不同索引对.这就好像我有1个颜色的球A,4个颜色的球B等,我正在画n个球而没有替换.
我希望它以相同的格式返回,作为矩阵.一个示例返回值,例如,下采样(Q,3)=
0 0 2
1 0 0
Run Code Online (Sandbox Code Playgroud)
我的方法是尝试使用示例:
sample(length(as.vector(Q)), size=n, replace=FALSE, prob = as.vector(Q))
Run Code Online (Sandbox Code Playgroud)
然而问题是,样本认为1:长度(as.vector(Q))就像我拥有的所有球一样,所以我不能画出超过长度(as.vector(Q))球,因为我不是替换我的球.
那么为了适应我的方法,我需要通过从这个向量中减去1来更新我的概率,并使用某种类型的for循环逐个调用样本.它听起来不像很好的代码.
有没有更好的方法在R友好,不循环的方式做到这一点?
我正在尝试使用ffmpeg / libswresample对我的c ++应用程序中的流音频进行重新采样。更改样本宽度效果很好,结果听起来像人们期望的那样。但是,更改采样率时,结果会有些混乱。我不确定这是由于对libswresample库的使用不正确,还是由于我误解了重采样理论。
这是我的重采样过程,为演示起见简化了:
//Externally supplied data
const uint8_t* in_samples //contains the audio data to be resampled
int in_num_samples = 256
//Set up resampling context
SwrContext *swr = swr_alloc();
av_opt_set_channel_layout(swr, "in_channel_layout", AV_CH_LAYOUT_STEREO, 0);
av_opt_set_channel_layout(swr, "out_channel_layout", AV_CH_LAYOUT_STEREO, 0);
av_opt_set_int(swr, "in_sample_rate", 44100, 0);
av_opt_set_int(swr, "out_sample_rate", 22050, 0);
av_opt_set_sample_fmt(swr, "in_sample_fmt", AV_SAMPLE_FMT_FLT, 0);
av_opt_set_sample_fmt(swr, "out_sample_fmt", AV_SAMPLE_FMT_FLT, 0);
swr_init(swr);
//Perform the resampe
uint8_t* out_samples;
int out_num_samples = av_rescale_rnd(swr_get_delay(swr, in_samplerate) + in_num_samples, out_samplerate, in_samplerate, AV_ROUND_UP);
av_samples_alloc(&out_samples, NULL, out_num_channels, out_num_samples, AV_SAMPLE_FMT_FLT, 0);
out_num_samples = swr_convert(swr, &out_samples, …Run Code Online (Sandbox Code Playgroud) 我正在创建一个简单的代码,当您的目标变量具有 2 个以上的类时,它允许对数据帧进行下采样。
让df我们的任意数据集和'TARGET_VAR'一个具有 2 个以上类的分类变量。
import pandas as pd
label='TARGET_VAR' #define the target variable
num_class=df[label].value_counts() #creates list with the count of each class value
temp=pd.DataFrame() #create empty dataframe to be filled up
for cl in num_class.index: #loop through classes
#iteratively downsample every class according to the smallest
#class 'min(num_class)' and append it to the dataframe.
temp=temp.append(df[df[label]==cl].sample(min(num_class)))
df=temp #redefine initial dataframe as the subsample one
del temp, num_class #delete temporary dataframe
Run Code Online (Sandbox Code Playgroud)
现在我想知道,有没有办法以更精致的方式做到这一点?例如,无需创建临时数据集?我试图找出一种方法来“矢量化”多个类的操作,但没有取得任何进展。下面是我的想法,可以很容易地为 2 个类实现,但我不知道如何将它扩展到多个类的情况。
如果您有 2 …
downsampling ×9
python ×4
audio ×2
arrays ×1
bokeh ×1
c++ ×1
charts ×1
ffmpeg ×1
ghostscript ×1
image ×1
javascript ×1
matrix ×1
monitoring ×1
opentsdb ×1
pandas ×1
pdf ×1
r ×1
resampling ×1
sampling ×1
swift ×1
swift3 ×1
wav ×1