我有一个项目,其中涉及 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) 解决了
我有一堆标有 1.png 等的文件。我正在使用以下命令行生成 gif 动画:
convert -delay 20 *.png animation.gif
Run Code Online (Sandbox Code Playgroud)
但是帧会按顺序叠加。我没想到这种行为,可能有什么问题?
谢谢
编辑
正如 Mark 所指出的,我的 png 文件是透明的。
我正在尝试将一些文本文件堆叠为新列.这些文件名为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) 我想根据一个数组(最多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位
armadillo ×1
bash ×1
c++ ×1
gif ×1
imagemagick ×1
matplotlib ×1
paste ×1
permutation ×1
python ×1
rcpp ×1
transpose ×1
unix ×1