找到我的git存储库大小的简单方法是什么?而且我不是指du -h我的仓库的根目录.我有很多被忽略的文件,因此大小与我的总回购大小不同.我基本上想知道在克隆我的回购时会传输多少数据.
我想将两个向量,一列(即(N + 1)x1),一行(即1x(N + 1))相乘,得到(N + 1)x(N + 1)矩阵.我对Numpy很新,但是对MATLAB有一些经验,这是我在Numpy中想要的MATLAB中的等价代码:
n = 0:N;
xx = cos(pi*n/N)';
T = cos(acos(xx)*n');
Run Code Online (Sandbox Code Playgroud)
在Numpy,我试过:
import numpy as np
n = range(0,N+1)
pi = np.pi
xx = np.cos(np.multiply(pi / float(N), n))
xxa = np.asarray(xx)
na = np.asarray(n)
nd = np.transpose(na)
T = np.cos(np.multiply(np.arccos(xxa),nd))
Run Code Online (Sandbox Code Playgroud)
在我注意到没有它之后我添加了asarray行Numpy似乎将xx和n视为列表.np.shape(n),np.shape(xx),np.shape(na)并np.shape(xxa)给出了相同的结果:(100001L,)
我想知道如何从numpy中的2D数组中删除第一行和最后一行和列.例如,假设我们在MATLAB/Octave中有一个(N+1) x (N+1)称为矩阵的矩阵H,我将使用的代码是:
Hsub = H(2:N,2:N);
Run Code Online (Sandbox Code Playgroud)
Numpy中的等效代码是什么?我认为这np.reshape可能会做我想要的但我不知道如何让它只删除目标行,因为我认为如果我重塑为(N-1) x (N-1)矩阵,它将删除最后两行和列.
我目前有这个bash脚本(位于我的主目录,即,/home/fusion809/我以root身份运行它,因为它是图标复制行所必需的):
cd /home/fusion809/Pictures/Icon*
declare -a A={Arch,Debian,Fedora,Mageia,Manjaro,OpenSUSE}
declare -a B={Adwaita,Faenza,gnome,Humanity}
for i in $A; do
for j in $B; do
if test -e /usr/share/icons/$j/scalable ; else
mkdir /usr/share/icons/$j/scalable/
fi
if test -e /usr/share/icons/$j/scalable/$i.svg ; else
cp -a $i*.svg /usr/share/icons/$j/scalable/$i.svg
fi
done
done
Run Code Online (Sandbox Code Playgroud)
我希望这个脚本做的是将图标从我的Pictures/Icons and logos目录复制到scalable主题(指定在$B)子目录中/usr/share/icons.但是,在它执行此操作之前,我希望它scalable在这些主题子目录中创建一个目录(如果它尚不存在).问题是条件的else部分没有被正确读取,因为我一直收到这个错误:
./copyicon.sh: line 8: syntax error near unexpected token `else'
./copyicon.sh: line 8: ` if test -e /usr/share/icons/$j/scalable ; else'
Run Code Online (Sandbox Code Playgroud)
如果你想知道为什么test -e ...在条件中它是基于关于bash脚本的教科书我一直在关注.
我的目录中有这个depends文件$PATH:
#!/bin/bash
k=0
for i in "$@"
do
DP[k]="nodejs-$i"
k=$((k+1))
done
echo $DP
Run Code Online (Sandbox Code Playgroud)
我跑了depends js kd,它返回了:
nodejs-js
Run Code Online (Sandbox Code Playgroud)
这让我感到惊讶,因为我认为我会得到的结果是:
nodejs-js nodejs-kd
Run Code Online (Sandbox Code Playgroud)
因为循环的目的是向DP表单数组添加新元素nodejs-$i,其中是我运行脚本时$i提供给脚本的输入。depends我尝试使用此依赖脚本来代替:
#!/bin/bash
DP=()
for i in "$@"
do
DP+=("nodejs-$i")
done
echo $DP
Run Code Online (Sandbox Code Playgroud)
但它返回了与输入完全相同的结果js kd(即输出是nodejs-js)。
我一直试图在我的Hexo帖子中插入脚注(用Markdown编写,如果他们的标记语言相关).我来自使用Jekyll为我的网站提供动力的背景,当我使用Jekyll时,我会[^n]在文本中添加(其中n是正整数,即n∈{1,2,3,...}),例如:
[^1]: footnote #1
[^2]: footnote #2
[^3]: footnote #3
...
Run Code Online (Sandbox Code Playgroud)
在帖子的末尾,其中footnote #1,#2,#3,等被替换为我的实际注脚.虽然Hexo的东西看起来有点复杂.我在https://hexo.io/plugins/上找了一个脚注插件,我可能会添加不成功,然后我用Google搜索答案并找到了这个要点https://gist.github.com/kuanyui/d1728c2a526a615de56c.我试图通过将它添加到我的Hexo站点的script文件夹来使用这个要点,但是这个失败了(有关完整的错误详情,请参阅要点,因为我在那里评论了详细信息).然后,我通过检查我的Jekyll帖子的生成内容尝试了一个HTML技巧,该帖子通过上述方法添加了脚注.即,添加:
<sup id="fnref:n"><a href="#fn:n" class="footnote">n</a></sup>
Run Code Online (Sandbox Code Playgroud)
(其中n又是正整数)在文本中我希望我的脚注出现并且:
<ol>
<li id="fn:1">Footnote #1.<a href="#fnref:1" class="reversefootnote">?</a></li>
<li id="fn:2">Footnote #2.<a href="#fnref:2" class="reversefootnote">?</a></li>
<li id="fn:3">Footnote #3.<a href="#fnref:3" class="reversefootnote">?</a></li>
...
</ol>
Run Code Online (Sandbox Code Playgroud)
到帖子的结尾.问题是这种方法虽然有效,但也很繁琐(即每个脚注需要比我想要的更多的打字),所以我尝试创建这个ejs模板(对应于文本脚注),我放在我的layouts文件夹下的名称footnotes.ejs:
<sup id ="fnref:<%= n %>"><a href="#fn:<%= n %>"><%= n %></a></sup>
Run Code Online (Sandbox Code Playgroud)
并将其插入我的帖子中:
<%- include('layouts/footnotes', {n:1}); %>
Run Code Online (Sandbox Code Playgroud)
但这也失败了(失败了,我的意思是当我生成我的hexo网站时,这个文本引文完全没有格式化).
所以我在这里要求一种更有效的方法将脚注插入Hexo帖子.即每个脚注尽可能少打字的人.
我有shell脚本:
#!/bin/bash
export LD=$(lsb_release -sd | sed 's/"//g')
export ARCH=$(uname -m)
export VER=$(lsb_release -sr)
# Load the test function
/bin/bash -c "lib/test.sh"
echo $VER
DISTROS=('Arch'
'CentOS'
'Debian'
'Fedora'
'Gentoo')
for I in "${DISTROS[@]}"
do
i=$(echo $I | tr '[:upper:]' '[:lower:]') # convert distro string to lowercase
if [[ $LD == "$I"* ]]; then
./$ARCH/${i}.sh
fi
done
Run Code Online (Sandbox Code Playgroud)
如您所见,它应该运行一个 shell 脚本,具体取决于它运行的架构和操作系统。它应该先运行脚本,lib/test.sh然后再运行此体系结构和特定于操作系统的脚本。这是lib/test.sh:
#!/bin/bash
function comex {
which $1 >/dev/null 2>&1
}
Run Code Online (Sandbox Code Playgroud)
当我使用这个x86_64/arch.sh脚本在 x86_64 Arch Linux 上运行它时:
#!/bin/bash …Run Code Online (Sandbox Code Playgroud) 我一直在编写一个 C++ 程序来解决简单钟摆的问题,然后使用 GNU Octave 绘制结果。它通过我程序中的这一行绘制结果:
system("./simppenadj.sh");
Run Code Online (Sandbox Code Playgroud)
在哪里simppenadj.sh:
#!/bin/sh
octave --no-gui --persist -q simppenadj.m
Run Code Online (Sandbox Code Playgroud)
并且simppenadj.m是:
#!/usr/bin/octave
# Plotting simppenadj.txt
A = importdata('simppenadj.txt');
B = importdata('simppenadjdx.txt');
t = A(:,1);
theta = A(:,2);
dtheta = B(:,2);
figure
plot(t,theta)
xlabel('t','FontSize',16,'FontWeight','bold')
ylabel('\theta','FontSize',16,'FontWeight','bold')
title('{d^{2}\theta}/{d{t^{2}}} = -9.8 cos({\theta})','FontSize',18,'FontWeight','bold')
figure
plot(theta,dtheta)
xlabel('\theta','FontSize',16,'FontWeight','bold')
ylabel('d\theta/dt','FontSize',16,'FontWeight','bold')
title('{d^{2}\theta}/{d{t^{2}}} = -9.8 cos({\theta})','FontSize',18,'FontWeight','bold')
Run Code Online (Sandbox Code Playgroud)
每当我运行我的 C++ 程序时,GNU Octave 的 CLI 就会启动(并在最后保持打开状态)并绘制数据。我不希望 GNU Octave 的 CLI 保持打开状态,但我知道如何让它不打开的唯一方法是删除--persist选项,simppenadj.sh其中也使 GNU Octave 生成的图不保持打开状态。这是一个问题,因为我希望在我的 C++ 程序运行后保持打开状态。那么有没有办法做到这一点?
在我使用 Kramdown 渲染的 Markdown 文件中,我有一个这样的列表:
第 2 段
第 2 段
等等。问题是如何让第二、第三、第四和第 n 段像第一段一样缩进?这是我想要的,因为我想清楚由项目符号指示的列表实际上在哪里结束。
我曾尝试在同一项目符号下的新段落之前使用>>和::,但都没有产生预期的效果,即>>我得到:
第 2 段
第 2 段
同样,::我得到:
* 第2段
* 第2段
同样,如果我使用 (添加一个空格)它所做的只是缩进段落的开头,而不是它的其余部分。那么,有没有人知道解决这个困境的方法?
我知道一个 HTML 解决方案——仅仅创建一个 HTML 列表,它更好地迎合一个项目符号下的新段落——但我想要一个降价解决方案。
我一直在编写一个在 CentOS 7 Docker 容器中运行的 shell 脚本,以创建 AppImage。在此脚本中,我想pip install -U spyder从 shell 脚本启动的 Python 虚拟环境(通过运行 启动source AppDir/usr/bin/activate)中运行 Shell 命令。问题是我不知道如何执行此操作,因为脚本中该source AppDir/usr/bin/activate行之后的行被忽略(此时在脚本中,shell 已进入 Python 虚拟环境)。那么我是否需要一些选项来传递source AppDir/usr/bin/activate命令,以便它能够pip install -U spyder在这个 Python 虚拟环境中运行该命令?
在我自己努力解决我在 Ask Fedora 上提出的这个未解决的问题时,我一直在尝试确定Fedora我的/boot/grub2/grub.cfg文件中最后一次出现字符串的行号。有没有办法做到这一点使用sed,grep,awk或任何其它常见壳(特别是在Z壳牌,如果特定的UNIX shell我使用事项)命令?例如,我想要的命令将为此 grub.cfg文件返回127(即,第 127 行,这是字符串最后一次出现的位置Fedora)。我会使用这个 shell 命令来确定这个行号,以便我可以将它提供给 sed(使用类似于这个问题中的命令sed,因为我只想在提到 Fedora 的那些行之后替换正则表达式)。
我正在使用此脚本:
if [[ -f /usr/bin/atom ]]; then
ATOM_INSTALLED_VERSION=$(rpm -qi atom | grep "Version" | cut -d ':' -f 2 | cut -d ' ' -f 2)
else
ATOM_INSTALLED_VERSION=""
fi
ATOM_LATEST_VERSION=$(wget -q "https://api.github.com/repos/atom/atom/releases/latest" -O - | grep -E "https.*atom-amd64.tar.gz" | cut -d '"' -f 4 | cut -d '/' -f 8 | sed 's/v//g')
if [[ "$ATOM_INSTALLED_VERSION" -lt "$ATOM_LATEST_VERSION" ]]; then
sudo dnf install -y https://github.com/atom/atom/releases/download/v${ATOM_LATEST_VERSION}/atom.x86_64.rpm
fi
Run Code Online (Sandbox Code Playgroud)
检查Atom升级并安装(如果可用)。问题是测试:
[[ "$ATOM_INSTALLED_VERSION" -lt "$ATOM_LATEST_VERSION" ]]
Run Code Online (Sandbox Code Playgroud)
返回:
zsh: bad floating point constant
Run Code Online (Sandbox Code Playgroud)
其中(显示输入和输出):
$ …Run Code Online (Sandbox Code Playgroud) 我用SciPy用脚本数字解决了Lorenz方程:
# Lorenz Equations SciPy solver
import numpy as np
from scipy import integrate
from math import cos
from matplotlib import pyplot as plt
a, b = 0, 100
sigma, rho, beta = 10, 28, 8/3
N = 1000000
h = (b-a) / float(N)
def solvr(Y, t):
return [sigma*(Y[1]-Y[0]), Y[0]*(rho-Y[2])-Y[1], Y[0]*Y[1]-beta*Y[2]]
t = np.arange(a, b, h)
asol = integrate.odeint(solvr, [0, 1, 1], t)
x = asol[:,0]
y = asol[:,1]
z = asol[:,2]
Run Code Online (Sandbox Code Playgroud)
现在我想做的是在3D线(或线框)图中绘图x,y并且z(这些都是Numpy ndarrays,如果你不确定)相互对立.我认为这必须使用matplotlib来完成,但我并不挑剔,只要你给我一个能用3D绘制数据的解决方案我不关心我需要导入哪些模块.