假设您有两个嵌套的for循环,如下所示:
int i, j; // Iterators
for(i=0; i<100; ++i) {
/* do some stuff */
...
for(j=0; j<99; ++j) {
/* do more stuff */
...
if( someFunction(j,i) == 2 ) {
/* break out of both loops */
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法(类似于break;一个循环中的命令)在现场结束两个循环?
似乎github的web-UI不允许在空存储库上使用"Fork"按钮.我想分叉,添加文件,进行提交,然后在其他人完全空的存储库上提取请求.是否有解决方法,或者我应该等到他添加文件?
不要害怕我的帖子的长度,它很简单,我只是不知道如何把它更短:
我有两种方法可以做一些非常类似于通过函数合并两个数组的方法.我在这里调用该函数combine_data().该阵列称为data1和data2.假设我的数组如下:
int num1 = 4;
int num2 = 6;
double data1[num1] = /* some values */
double data2[mum2] = /* some values */
Run Code Online (Sandbox Code Playgroud)
我可以使用我发现更优雅的解决方案,但我不确定这是不是很好的做法,并且行为正常.该解决方案依赖于旨在使数组持久化的静态变量.不知怎的,感觉它可能会以某种方式在我的脸上爆炸.
// SOLUTION 1
double* combine_data(
const int num1, const double* const data1,
const int num2, const double* const data2
) {
int i;
int num = num1 + num2;
double *combi; // static because the data stored the should persist
combi = (double*)malloc( num*sizeof(*combi) );
/* …Run Code Online (Sandbox Code Playgroud) 我有一个numpy数组和该数组中的有效值列表:
import numpy as np
arr = np.array([[1,2,0], [2,2,0], [4,1,0], [4,1,0], [3,2,0], ... ])
valid = [1,4]
Run Code Online (Sandbox Code Playgroud)
是否有一种很好的pythonic方法可以将所有数组值设置为零,这些方法不在有效值列表中并就地执行?执行此操作后,列表应如下所示:
[[1,0,0], [0,0,0], [4,1,0], [4,1,0], [0,0,0], ... ]
Run Code Online (Sandbox Code Playgroud)
以下内容在内存中创建了一个数组副本,这对大型数组不利:
arr = np.vectorize(lambda x: x if x in valid else 0)(arr)
Run Code Online (Sandbox Code Playgroud)
它让我烦恼,现在我遍历每个数组元素并将其设置为零(如果它在valid列表中).
编辑:我找到了一个答案,表明没有就地功能来实现这一目标.也停止改变我的空白.更容易看到arr它们的变化.
常规 Python 包在它们的入口点注册setup.py或在pyporject.toml文件中指定它们。后者就是这种情况,如果他们不使用 distutils/setuptools 进行打包。例如,setuptools 自己的 setup.py将其作为以下参数之一setuptools.setup():
entry_points={
"setuptools.finalize_distribution_options": [
"parent_finalize = setuptools.dist:_Distribution.finalize_options",
"features = setuptools.dist:Distribution._finalize_feature_opts",
"keywords = setuptools.dist:Distribution._finalize_setup_keywords",
"2to3_doctests = "
"setuptools.dist:Distribution._finalize_2to3_doctests",
],
Run Code Online (Sandbox Code Playgroud)
当标准库包与 python 捆绑在一起时,它们如何注册它们的入口点?
例如,distutils它本身有一setup_keywords组入口点。
>>> for ep in pkg_resources.iter_entry_points(group='distutils.setup_keywords'):
>>> print(ep)
convert_2to3_doctests = setuptools.dist:assert_string_list
dependency_links = setuptools.dist:assert_string_list
eager_resources = setuptools.dist:assert_string_list
exclude_package_data = setuptools.dist:check_package_data
extras_require = setuptools.dist:check_extras
include_package_data = setuptools.dist:assert_bool
install_requires = setuptools.dist:check_requirements
namespace_packages = setuptools.dist:check_nsp
package_data = setuptools.dist:check_package_data
# ... and so on …Run Code Online (Sandbox Code Playgroud) 假设我们有一个目录列表,其中某些目录可能不存在:
dirs = ['dir1','dir2','dir3']
Run Code Online (Sandbox Code Playgroud)
为了论证,仅存在两个,它们的内容是:
目录1 --file1a --file1b 目录2 --file2a --file2b
统一列出所有文件的最佳方式是什么?我最接近的是:
import os
files = [ os.listdir(x) for x in ['dir1','dir','dir3'] if os.path.isdir(x) ]
Run Code Online (Sandbox Code Playgroud)
但这给了我一个嵌套列表:
[['file1a','file1b'],['file2a','file2b']]
Run Code Online (Sandbox Code Playgroud)
如果我希望使用那种单线纸['file1a', 'file1b', 'file2a', 'file2b']呢?
考虑这个C代码,其中foo是int:
switch(foo){
case 1: {
int bla = 255;
case 2:
printf("case12 %d\n", bla);
break;
case 3:
printf("case3 %d\n", bla);
}
};
Run Code Online (Sandbox Code Playgroud)
对于不同foo的代码值,给出以下输出:
case12 255 # foo=1
case12 255 # foo=2
case3 0 # foo=3
Run Code Online (Sandbox Code Playgroud)
我有一个问题的理解foo=3.声明bla和定义其值的行不应该在何时执行foo=3.switch语句应该直接跳转到标签case 3:.然而,没有警告,所以bla似乎至少已经宣布.它可能是未初始化的,但它的价值恰好是0.你能解释一下,"案例3"中发生了什么,以及为什么这是合法的C代码?
我有一个简单的图像图,像这样:
import numpy as np
import matplotlib.pyplot as plt
data = np.arange(25)
data.shape = (5,5)
plt.imshow(data, interpolation='none')
plt.show()
Run Code Online (Sandbox Code Playgroud)
在这种情况下,输入数据为5x5矩阵。轴上的刻度从0到4。如何在不更改显示图像的情况下将此范围更改为10到50?我想在不缩放图像的情况下重新缩放轴。
我想在下面的(否则)空图中标记为“10kpc”的图中添加一个比例指示器。所以基本上,轴使用一个度量单位,我想用不同的单位表示图中的长度。它必须具有与下面相同的样式,即|----| 上面有文字的栏。
在 matplotlib 中是否有一种方便的方法来做到这一点,还是我必须画三行(两条小垂直线,一条水平线)并添加文本?一个理想的解决方案甚至不需要我在数据维度中设置坐标,即我只是说一些沿线的内容horizontalalignment='left', verticalalignment='bottom', transform=ax.transAxes并仅指定数据坐标中的宽度。
在我得出结论之前,我与annotate()和arrow()和他们的文档争吵了一下,他们并不是很有用,但我可能是错的。
编辑:
下面的代码是最接近的,我到目前为止。我仍然不喜欢在数据坐标系中指定 x 坐标。我唯一想在数据中指定的是条的宽度。其余部分应放置在绘图系统中,理想情况下,条形图应相对于文本(上方几个像素)放置。
import matplotlib.pyplot as plt
import matplotlib.transforms as tfrms
plt.imshow(somedata)
plt.colorbar()
ax = plt.gca()
trans = tfrms.blended_transform_factory( ax.transData, ax.transAxes )
plt.errorbar( 5, 0.06, xerr=10*arcsecperkpc/2, color='k', capsize=5, transform=trans )
plt.text( 5, 0.05, '10kpc', horizontalalignment='center', verticalalignment='top', transform=trans )
Run Code Online (Sandbox Code Playgroud)
我在shell变量中有一些多行字符串.字符串的所有行都有一个未知的缩进级别,至少有几个空格字符(在我的示例中为8个空格,但可以是任意的).我们来看一下这个示例字符串:
I am at the root indentation level (8 spaces).
I am at the root indentation level, too.
I am one level deeper
Am too
I am at the root again
I am even two levels deeper
three
two
one
common
common
Run Code Online (Sandbox Code Playgroud)
我想要的是一个Bash函数或命令去掉常见的缩进级别(这里有8个空格),所以我得到了这个:
I am at the root indentation level (8 spaces).
I am at the root indentation level, too.
I am one level deeper
Am too
I am at the root again
I am even two levels deeper
three …Run Code Online (Sandbox Code Playgroud) 我有一个称为o_potential填充了一些值的焦虑矩阵,并希望从中生成一个等高线图.我尝试了几种方法但没有成功.这就是我现在所拥有的.
n = 20
x = arange(0,n-1)
y = arange(0,n-1)
plt.contourf(x, y, o_potential[x][y])
plt.show()
Run Code Online (Sandbox Code Playgroud)
o_potential 看起来像这样
o_potential = [[ -1., -1., -1., -1., -1. ],
[ 10., 4.12244898, 2.7755102, 4.12244898, 10. ],
[ 10., 5.7755102, 4.24489796, 5.7755102, 10. ],
[ 10., 4.12244898, 2.7755102, 4.12244898, 10. ],
[ -1., -1., -1., -1., -1. ]]
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:"用作索引的数组必须是整数(或布尔)类型."
我昨天一直在努力解决这个问题.我尝试了几乎所有Google搜索结果,但无法解决问题.非常感谢您的帮助!
到目前为止,我在脚本,别名和shell中使用了类似的东西:
qstat -u $USER
Run Code Online (Sandbox Code Playgroud)
现在我发现$USER变量也不$USERNAME是bash内置的变量.虽然$UID和$EUID是.
我当然可以使用$(whoami)或类似的东西.有很多方法可以找出当前进程的用户名.但是最好的,最有活力和最短的一个是什么?为什么?
所以我正在做一个带有内联标签的等高线图。标签应尽可能简洁。到目前为止,我正在使用:
import matplotlib.pyplot as plt
CS = plt.contour(dat, [2e6, 5e8, 8e11], norm = LogNorm(vmin=cutoff))
plt.clabel(CS, fontsize=9, inline=1, fmt="%.0g")
Run Code Online (Sandbox Code Playgroud)
这导致标签像
2e-06 5e+08 8e+11
我认为指数中不应该有前导零,如果指数为正,则应省略 sing,即上面的示例应为:
2e-6 5e8 2e11
我可以使用什么格式说明符或格式化程序函数来实现这一点?
python ×6
matplotlib ×4
c ×3
bash ×2
annotations ×1
arrays ×1
declaration ×1
directory ×1
entry-point ×1
git ×1
github ×1
indentation ×1
line-by-line ×1
list ×1
loops ×1
numpy ×1
pointers ×1
python-2.7 ×1
repository ×1
scale ×1
static ×1
string ×1