小编cac*_*oza的帖子

Armadillo (C++) 中的快速数组置换(广义张量转置)

我有一个项目,其中涉及 3D 数组 ( arma::Cube<cx_double>)的大量排列。特别是,所需的排列是按切片交换列。在 Matlab 中,这是permute(cube,[1,3,2])numpy.transpose(cube,axis=[0,2,1]).

不幸的是,犰狳本身没有permute功能。我尝试了不同的方法,但与 Matlab 相比,它们都相当慢。我想知道在 Armadillo 中置换(相当大)立方体的更快方法是什么。使用 分析代码gprof,大部分时间都花在了我在下面尝试过的置换函数中,而在 Matlab 中,对于同一个移植项目,大部分时间都花在了 SVD 或 QR 矩阵分解上(reshape 和 permute 在MATLAB)。

我想了解在犰狳中进行这种排列的最快方法是什么,以及为什么有些方法比其他方法效果更好。

选项 1:原始排列(最快的选项)(有更快的方法吗?)

输入立方体到输出立方体的元素分配。

template <typename T>
static Cube<T> permute (Cube<T>& cube){

uword D1=cube.n_rows;
uword D2=cube.n_cols;
uword D3=cube.n_slices;

Cube<T> output(D1,D3,D2);

for (uword s = 0; s < D3; ++s){
for (uword c = 0; c < D2; ++c){
for (uword r = 0; r < D1; …
Run Code Online (Sandbox Code Playgroud)

c++ transpose permutation armadillo rcpp

6
推荐指数
1
解决办法
952
查看次数

如何避免 Imagemagick 在 gif 中转换帧的叠加

解决了

我有一堆标有 1.png 等的文件。我正在使用以下命令行生成 gif 动画:

convert -delay 20 *.png animation.gif
Run Code Online (Sandbox Code Playgroud)

但是帧会按顺序叠加。我没想到这种行为,可能有什么问题?

谢谢

编辑

正如 Mark 所指出的,我的 png 文件是透明的。

imagemagick gif imagemagick-convert

5
推荐指数
1
解决办法
1667
查看次数

支撑扩展步进增量不工作bash

我正在尝试将一些文本文件堆叠为新列.这些文件名为energies_Strength0.0BosonsXXX.txt,其中XXX为80,90,100或110.当我运行以下命令时:

paste energies_Strength0.0Bosons{110..80..10}.txt | column -s $'\t' -t > energies_Strength0.0.txt
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

paste: energies_Strength0.0Bosons{110..80..10}.txt: No such file or directory
paste: energies_Strength0.1Bosons{110..80..10}.txt: No such file or directory
paste: energies_Strength0.05Bosons{110..80..10}.txt: No such file or directory
paste: energies_Strength0.15Bosons{110..80..10}.txt: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如果文件以单位步骤编入索引,那么同样的命令也可以正常工作.这是,如果XXX = {80,81,82,...,109,110},我运行命令:

 paste energies_Strength0.0Bosons{110..80}.txt | column -s $'\t' -t > energies_Strength0.0.txt
Run Code Online (Sandbox Code Playgroud)

编辑:

你好,我根据你的想法尝试了以下几行:

#$ -S /bin/bash
LANG=C 

for ((i=110; i>=80; i-=10));
do
paste energies_Strength0.0Bosons$i.txt | column -s $'\t' -t > energies_Strength0.0.txt
done 
Run Code Online (Sandbox Code Playgroud)

但它只粘贴... Bosons80.txt文件.我需要构建如下结构:

paste ...80.txt ...90.txt ...100.txt ...110.txt | …
Run Code Online (Sandbox Code Playgroud)

unix bash paste

3
推荐指数
2
解决办法
174
查看次数

1D绘图matplotlib

我想根据一个数组(最多1000个元素)绘制单行刻度.我宁愿不使用类似的东西:

    plt.xticks(energies[i][j])
Run Code Online (Sandbox Code Playgroud)

因为每个样本值都写在下面.我已经广泛查看了Matplotlib文档,但除了hist()之外没有找到任何内容.如果你们知道将1D阵列可视化为单行的其他方法,我将非常感激,特别是如果它涉及表示值密度的颜色.

我正在使用Spyder 2.2.5,Python 2.7.6 | OSX 10.7.4中的64位

python matplotlib

2
推荐指数
1
解决办法
1万
查看次数