我想获取当前目录的路径,在该目录下执行.py文件.
例如,一个D:\test.py包含代码的简单文件:
import os
print os.getcwd()
print os.path.basename(__file__)
print os.path.abspath(__file__)
print os.path.dirname(__file__)
Run Code Online (Sandbox Code Playgroud)
输出结果是奇怪的:
D:\
test.py
D:\test.py
EMPTY
Run Code Online (Sandbox Code Playgroud)
我期待从相同的结果getcwd()和path.dirname().
鉴于os.path.abspath = os.path.dirname + os.path.basename,为什么
os.path.dirname(__file__)
Run Code Online (Sandbox Code Playgroud)
返回空?
使用有什么不同
import numpy as np
a, b = np.random([1024, 1024]), np.random([1024, 1024])
c = np.multiply(a, b)
Run Code Online (Sandbox Code Playgroud)
过度
c = a * b
Run Code Online (Sandbox Code Playgroud)
或者是*numpy-arrays上的-Operator只是被覆盖了np.multiply?
编辑:这个问题被标记为重复,因为一个问题询问有关除法运算符(np.divide()vs/)和类似答案的相同的事情,但除非它被改为"numpy算术与python算术"或类似的东西,它赢了'帮助人们想到和我一样的事情(关于乘法)而不是"聪明"足以假设关于相关算术运算(除法)的问题推广到所有基本算术运算.为了更容易找到答案,我主张保持这个问题.
我使用张量流已经有一段时间了。最近,我的脚本运行速度非常慢(> 80 秒),而之前(< 1 秒)。我将问题范围缩小到import tensorflow,仅此一项就花费了所有时间(所有其他库和操作都运行 << 1 秒)。
我可能有一个跟踪,但我不知道如何处理它:当我在 80 秒导入期间键盘中断 (Strg+C) 执行时,通常会出现以下情况:
Traceback (most recent call last):
File "/.../py_env/tf_unet/lib/python3.5/site.py", line 703, in <module>
main()
File "/.../py_env/tf_unet/lib/python3.5/site.py", line 694, in main
execsitecustomize()
File "/.../py_env/tf_unet/lib/python3.5/site.py", line 548, in execsitecustomize
import sitecustomize
File "/usr/lib/python3.5/sitecustomize.py", line 3, in <module>
import apport_python_hook
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 954, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 896, in _find_spec
File "<frozen importlib._bootstrap_external>", line 1139, in find_spec
File …Run Code Online (Sandbox Code Playgroud) 我正在使用通过 ssh 访问的远程 Python 解释器(使用 pew 创建的虚拟环境)。当手动 ssh 连接到服务器并使用解释器时,这工作正常。但是,当使用 PyCharm 调用它时,它会忘记我在 .bashrc 中导出的环境变量。
似乎在通过 ssh 调用 Python 解释器时,PyCharm(即使从 bash 开始)忽略了 .bashrc。这里表明外壳包装器是解决方案。
#!/bin/bash -l
/path/to/interpreter/bin/python
Run Code Online (Sandbox Code Playgroud)
但是简单地将这个 shell 文件作为解释器提供给 PyCharm 是行不通的(包管理被禁用,并且在运行 py-code 时会打开一个 Python 终端......)。
如何获得“shell 包装器”以确保在运行 PyCharm 远程 Python 解释器之前执行 .bashrc?
我确保 PyCharm 在正确的环境下运行。所有本地解释器都没有显示该问题(在 PyCharm 终端和 Python 脚本中进行测试:)
import os
print(os.environ)
Run Code Online (Sandbox Code Playgroud)
我也知道用于运行特定文件的“编辑配置”选项以及在那里设置环境变量的可能性,但是对于每个项目/文件而不是我正在寻找的内容来说,这很乏味。
我在matlab中有一个非常大的结构数组.假设为了论证,为了简化情况,我有类似的东西:
structure(1).name = 'a';
structure(2).name = 'b';
structure(3).name = 'c';
structure(1).returns = 1;
structure(2).returns = 2;
structure(3).returns = 3;
Run Code Online (Sandbox Code Playgroud)
现在假设我有一些条件,并且让我想要从structure(2)(结构数组中的任何和所有条目)中删除所有内容.有什么好办法呢?
我的解决方案是将相应的字段设置为[](例如structure(1).name = [];),但不会删除它们,只会使它们为空.我如何从结构数组中完全删除它们?有办法吗?
我在matlab中尝试缝合图像,但得到难看的重叠线条.如何正确混合图像?目前我正在使用下面的代码,但它混合得太多(特别是建筑物窗户与幽灵文物混合,黑色建筑物也是如此).

%Tx - how much to move picture by x, Ty - by y (homography)
cropX = size(imcyl2, 2); %second image x size
xdimfirst = size(imcyl1, 2); %first image x size
ydimfirst = size(imcyl1, 1); %first image y size
xoverlap = xdimfirst - Tx;
newImg = imcyl1;
for y = 1:size(imcyl2, 1)
for x = 1:cropX
if ((Tx+x) > 0 && (Ty+y) >0)
% if we are in the overlap region, then we need to blend.
scale1 = (xoverlap - …Run Code Online (Sandbox Code Playgroud) 我希望在2D数据中找到峰值区域(如果你愿意,可以通过Hough变换创建灰度图像或2D景观).由峰区域我指的是本地最大峰值,但不是一个单一的点,但周围的一部分贡献区域与它去.我知道,这是一个模糊的定义,但也许山或下面的图像会让你直截了当地说出我的意思.
标记为红色(1-4)的峰是我想要的,粉红色(5-6)示例中的"灰色区域",如果没有找到那些较小的峰值,如果它们是.
图像包含1-20个峰值区域,高度不同.上面的冲浪图的2D数据如下所示,可能的结果(橙色对应峰值1,绿色对应峰值2 a/b,......).可以在描述链接中找到用于测试的单个图像:
图像左:输入图像 - - - - 中:( okaish)结果 - - - - 右:结果覆盖在图像上.
上面的结果是使用简单的阈值(MATLAB代码)生成的:
% thresh_scale = 15; % parameter: how many thresholding steps
% thresh_perc = 6; % parameter: threshold at which we clip
thresh = multithresh(H,thresh_scale);
q_image = imquantize(H, thresh);
q_image(q_image <= thresh_perc) = 0; % regions under threshold are thrown away
q_image(q_image > thresh_perc) = 1; % ... …Run Code Online (Sandbox Code Playgroud) litR 包有一种巧妙的方法来处理巨大(点云)数据集:该catalog函数(此处为doc)避免将数据集加载到内存中,并且可以将马赛克(分布在多个(不重叠)图块上的数据集)视为单个数据集。它在计算过程中以智能方式动态加载所需的图块。如果只处理数据集的一小部分,最好避免使用大文件(多个 GB)并保持内存需求精简。
R 中是否有类似的方便/内存高效/“lidR-catalog-way”来处理大型光栅马赛克? 或者用更通用的方式来说: 是否有一种方法可以在 R 中使用镶嵌栅格数据集而无需先合并它们?
我知道mosaic(doc)和merge函数,它们允许我将平铺栅格马赛克合并到单个栅格数据集中。我还发现这样gdal做会更快并且内存效率更高。这是一个 R 片段:
mosaicgdal <- function(files, out) {
in_files = do.call(paste, c(as.list(files), sep = " "))
cmd = paste("gdal_merge.py -a_nodata -32767 -ps 25 25 -o", out, in_files)
system(cmd)
}
Run Code Online (Sandbox Code Playgroud)
然而,两者都需要将整个数据集具体化为内存中(或至少在磁盘上)的单个文件。有办法避免这种情况吗?
我的应用程序: 我正在使用一个巨大的 LAS 点云(几个 TB,所有内容都平铺在 100 MB 文件中)和相应的栅格数据集(大约 100 GB),例如高分辨率地形模型。我通常处理小部分(通过空间多边形 [.shp/.kml] 分隔)或整个 LAS 切片。这在lidR中的内存效率非常高,只加载必要的图块:
# load several TB las tiles as catalog (only file-paths and metadata)
las_data …Run Code Online (Sandbox Code Playgroud) 我已经使用了f = h5py.File(filename, 'r')一段时间了,f.close()最后需要用 来关闭。
最近我发现我可以这样做:
with h5py.File(filename, 'r') as f:
# code to manipulate the file
Run Code Online (Sandbox Code Playgroud)
但是我不确定:这个“上下文管理器”(他们在页面上称之为)是否会自动关闭文件,还是我仍然需要f.close()在最后添加?
我试图在文档中找到答案,但上下文管理器仅在快速入门指南中的一行中提到,显然没有关于它的更多信息。
我正在使用张量板来可视化一些网络结果。方便的是,它添加了一个滑块来跳过步骤 - 但为了“同步”图像,我必须手动滑动到每个图像中的正确步骤。例如,我在这里滑动到step 32(predicition_c0_1左图)。如果我想要相应的prediction_c0(右图),我必须手动滑动到它。
有没有办法自动同步在所有图像上滑动步骤?