小编ber*_*ers的帖子

Python中r和R字符串前缀之间有区别吗?

Visual Studio代码使用前缀rR不同的方式突出显示字符串文字:

Match = re.search(r"\d{2} \d{4} \d{2}:\d{2}:\d{2})", Output) 
Match = re.search(R"\d{2} \d(4} \d{2}:\d{2}:\d{2})", Output) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这两个符号之间的含义是否有区别?用于不同的约定rR

python string visual-studio-code

23
推荐指数
1
解决办法
2272
查看次数

为什么(2 ^ 31)>> 32不是0?

我的问题是

np.array([2**31], dtype=np.uint32) >> 32
Run Code Online (Sandbox Code Playgroud)

不返回0,而是返回array([2147483648], dtype=uint32)。情况也是如此

np.right_shift(np.array([2**31], dtype=np.uint32), 32)
Run Code Online (Sandbox Code Playgroud)

(所以我相信这只是>>实现方式)。

有趣的是,所有这些替代方案似乎都能按预期工作,并返回了以下内容0

print(
    2**31 >> 32,
    np.uint32(2**31) >> 32,
    np.array(2**31, dtype=np.uint32) >> 32,
    np.right_shift(2**31, 32),
    np.right_shift([2**31], 32),
    np.right_shift(np.uint32(2**31), 32),
    np.right_shift(np.array(2**31, dtype=np.uint32), 32),
)
Run Code Online (Sandbox Code Playgroud)

特别是,代表2147483648和的Numpy数组之间有什么区别[2147483648]

我已经在JavaScript(为什么<< << 32在JavaScript中不会导致0?)和C ++(右移运算符(1 >> 32)的奇怪行为为什么'int >> 32`并不总是为零?)中看到这个问题。,但尚未在Python / Numpy中使用。实际上,Python和Numpy文档似乎都没有记录这种行为:

python arrays numpy bit-shift

14
推荐指数
1
解决办法
368
查看次数

为什么我不能使用 VS Code 直接编辑 git 索引中的分阶段更改?

我正在使用 VS Code,当我在提交之前(通常在只读“(索引)”编辑器中)发现分阶段更改中的拼写错误时,我总是很恼火。因为解决它涉及打开原始文件,找到相同的位置,进行更改,保存文件,现在打开文件的差异,暂存此更改(而不是其他更改),然后完成提交。这对我来说似乎没有必要复杂。

我只想对索引进行编辑 - VS Code 等智能编辑器应该能够在后台执行必要的操作。但它不会让我,因为编辑器是只读的,而且我“无法在只读编辑器中编辑”

有一个关于此问题的 GitHub 问题#91065(以及#91274#74149#15785#33681),称其“按设计”工作。但解释并没有真正向我解释:

差异的标题说(Index)- 这意味着您已经分阶段进行了更改,并且您正在将分阶段的更改与头部修订版进行比较。

正确,但这并不能解释为什么 VS Code 不能进行进一步的更改。

这与工作文件不同,因为您可以选择性地暂存文件的某些部分,因此暂存版本可能看起来与工作文件不同

再次强调:正确,但这并不能解释为什么 VS Code 不应该首先经历编辑“工作文件”的麻烦而无法进行进一步的更改。

您无法编辑右侧,因为更改是暂存的

这对我来说不是一个解释。

您需要编辑工作文件并暂存这些更改,或者取消暂存并编辑文件

最后,我再次不明白为什么 VS Code 不能为我做到这一点。

但也许我忽略了一些事情。所以我的问题是,

为什么我不能直接进行阶段更改?VS Code 应该可以吗?

git visual-studio-code

14
推荐指数
1
解决办法
1431
查看次数

如何在Windows命令行中通过WSL调用Linux命令?

我想ls在Windows 10的命令行中使用许多其他Linux工具.我知道有GnuWin32和其他二进制替代品,但这些都不如Windows子系统Linux(WSL)那样优雅; 包括更新机制.

使用WSL,可以ls ...从命令行调用bash -c "ls ...",这非常有效.但是,理想情况下,我只需ls在命令行上输入.我可以创建一个ls.bat基本上@bash -c "ls %*"- 但我必须为我想要导出的每个命令执行此操作.是否有更直接的方式将ls(和许多其他人)导出到命令行?

shortcut windows-subsystem-for-linux

10
推荐指数
2
解决办法
4264
查看次数

为什么加号和减号的晋级规则不同,但结果是一样的?

我想知道为什么a - ba + (-b)给出相同的结果,但在不同的类型中numpy

import numpy as np

minuend = np.array(1, dtype=np.int64)
subtrahend = 1 << 63

result_minus = minuend - subtrahend
result_plus = minuend + (-subtrahend)

print(result_minus == result_plus)  # True
print(type(result_minus))  # float64
print(type(result_plus))  # int64
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我在哪里可以读到相关内容?

numpy integer-promotion

10
推荐指数
1
解决办法
455
查看次数

箭头键在Windows批处理文件中触发"暂停"两次

在一个空的.bat文件中尝试这个:

@echo off
echo Try space and arrow-down
pause
echo 1
pause
echo 2
pause
echo 3
pause
echo 4
pause
echo 5
Run Code Online (Sandbox Code Playgroud)

为什么任何箭头键都会触发两次连续暂停,而空格或字母只触发一次?

谢谢!别尔斯

windows batch-file

8
推荐指数
1
解决办法
861
查看次数

在MATLAB中加速exp(A*x)的分析方法

我需要f(x)=exp(A*x)反复计算一个微小的,可变的列向量x和一个巨大的,恒定的矩阵A(许多行,几列).换句话说,x很少,但A*x很多.我的问题维度是这样的,它A*x占用了与exp()部分一样多的运行时间.

除了泰勒展开,并预先计算值的范围exp(y)(假设已知的范围内y的值A*x),这是我没有设法大大加快(同时保持精度)就什么MATLAB是对自己做的,我考虑分析性地重述问题,以便能够预先计算某些值.

例如,我发现了 exp(A*x)_i = exp(\sum_j A_ij x_j) = \prod_j exp(A_ij x_j) = \prod_j exp(A_ij)^x_j

这将允许我预先计算exp(A)一次,但是循环中所需的取幂与原始exp()函数调用一样昂贵,并且必须另外执行乘法(\ prod).

我还有其他想法可以遵循,或者我可能错过了MATLAB中的解决方案吗?

编辑:更多细节

A尺寸为81的是26873856(是的,那是巨大的),所以x是81乘1. nnz(A) / numel(A)0.0012,nnz(A*x) / numel(A*x)0.0075.我已经使用稀疏矩阵来表示A,但稀疏矩阵的exp()不再稀疏.所以事实上,我存储x非稀疏和我计算的exp(full(A*x))结果是快/慢full(exp(A*x))(我认为无论A*x是非稀疏的,因为x是非稀疏的.)exp(full(A*sparse(x)))是一种稀疏的方法A*x,但速度较慢.甚至更慢的变体exp(A*sparse(x))(对于稀疏类型的非稀疏矩阵具有双倍的内存影响)和full(exp(A*sparse(x))(其再次产生非稀疏结果).

sx = sparse(x);
tic, …
Run Code Online (Sandbox Code Playgroud)

performance matlab simplify exp

8
推荐指数
1
解决办法
1496
查看次数

为什么我在 TensorFlow Keras 中的损失函数和指标之间得到不同的值?

在我使用 TensorFlow 进行 CNN 训练时,我将其用作Keras.losses.poisson损失函数。现在,我喜欢与损失函数一起计算许多指标,并且我观察到这Keras.metrics.poisson给出​​了不同的结果 - 尽管两者是相同的函数。

请参阅此处的一些示例输出:loss输出poisson具有不同的范围,0.5 与 0.12:

Epoch 1/20
Epoch 00001: val_loss improved from inf to 0.53228, saving model to P:\Data\xyz.h5
 - 8174s - loss: 0.5085 - binary_crossentropy: 0.1252 - poisson: 0.1271 - mean_squared_error: 1.2530e-04 - mean_absolute_error: 0.0035 - mean_absolute_percentage_error: 38671.1055 - val_loss: 0.5323 - val_binary_crossentropy: 0.1305 - val_poisson: 0.1331 - val_mean_squared_error: 5.8477e-05 - val_mean_absolute_error: 0.0035 - val_mean_absolute_percentage_error: 1617.8346

Epoch 2/20
Epoch 00002: val_loss improved from 0.53228 to 0.53218, …
Run Code Online (Sandbox Code Playgroud)

keras tensorflow loss-function

8
推荐指数
1
解决办法
3927
查看次数

在自动缩进时,我可以让MATLAB忽略一段代码吗?

我喜欢MATLAB"智能缩进".Ctrl-A,Ctrl-I与我硬连线.然而,在我的一些-3000-行脚本,我有一个约100行代码段,我想不被MATLAB感动.

(为什么,你问?这就是原因:

x = ...
        aaaaaaaaaaaaaaaaa ...
    - ...
        ( ...
                bbbbbbbbbbbbbb ...
            + ...
                cccccccccccccccccccccc ...
        );
Run Code Online (Sandbox Code Playgroud)

这是我的编码方式,这是两件事的区别,其中一件是aaaaaaaaaaaaaaaaa,另一件是一组括号,......等等.

那么,我如何教MATLAB不重新缩进这部分呢?

matlab editor auto-indent

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

为什么这个表达式是 False?

在Python中,

1 in {1} == True
Run Code Online (Sandbox Code Playgroud)

也就是False为什么?

我首先认为这是由于运算符优先级造成的,但我能找到的所有内容(见下文)告诉我表达式是从左到右计算的:

  • 1 in {1}True
  • True == TrueTrue

此外,任何其他优先级都会导致TypeError

  • {1} == TrueFalse
  • 1 in False返回一个TypeError

Python 从左到右计算表达式。

https://docs.python.org/3/reference/expressions.html#evaluation-order

还,

同一框中的运算符具有相同的优先级。[...] 同一框中的运算符从左到右分组 ([...])。
[...] 在此输入图像描述

https://docs.python.org/3/reference/expressions.html#operator-precedence

python

6
推荐指数
0
解决办法
165
查看次数