私信  •  关注

Mad Physicist

Mad Physicist 最近创建的主题
Mad Physicist 最近回复了
3 年前
回复了 Mad Physicist 创建的主题 » 在Python中,如何获得没有小数的整数?

必须检查并显式转换为整数:

if x == (y := int(x)):
    x = y

或者,如果没有赋值运算符:

if x == int(x):
    x = int(x)

从python 3.8开始,您可以使用 math.isqrt :

math.isqrt(25)

请记住,这将始终返回一个整数,即使输入不是完美的平方。

3 年前
回复了 Mad Physicist 创建的主题 » Python中的别名,即使在Nyquist速率下

首先,你的代码不正确。采样频率为255Hz,而不是256 Hz。为了修复,

t = np.linspace(0, 1, 256, endpoint=False)

t = np.linspace(0, 1, 257)

以下是放大版的(校正后的)绘图,正弦波以更高的采样频率显示:

t = np.linspace(0, 1, 256, endpoint=False)
x = np.sin(2 * np.pi * 100 * t)
plt.plot(t, x)
plt.plot(t2 := np.linspace(0, 1, 10000), np.sin(2 * np.pi * 100 * t2), 'r:')

enter image description here

你每半个周期至少得到一个点,这意味着你可以根据这些数据有意义地估计真实频率。下面是一个以Nyquist(200Hz)采样的类似数据集:

enter image description here

使用不同的相位进行采样会使线路上下移动,但它不允许您找到有关输入信号的有意义信息。

混叠如下所示(采样频率为45Hz):

enter image description here

由于采样频率远低于信号频率,因此最终得到的估计值要低得多。

3 年前
回复了 Mad Physicist 创建的主题 » 如何在错误的Git分支上移动未提交的工作?[重复]

一个简单的方法就是跑步

git stash
git checkout f-testing-docs
git stash pop

stash 将备份文件。 stash pop 将允许您在转移到新分支机构之前解决任何冲突。如果没有冲突,则会自动删除隐藏。如果有的话,在你运行之前,这些藏品将作为备用

git stash drop
3 年前
回复了 Mad Physicist 创建的主题 » Python是根据输入变量操作字符串的好方法

从你实际拥有的钥匙开始,而不是猜测它们可能是什么。你需要过滤掉那些与你的模式相匹配的,并根据数字部分进行排序。

keys = [key for key in section.keys() if key.startswith('file') and key[4:].isdigit()]

您可以添加其他条件,例如 len(key) > 4 ,或完全放弃这些条件。您也可以考虑学习正则表达式以使检查更加优雅。

要在不考虑填充的情况下对名称进行排序,可以执行以下操作

keys = sorted(keys, key=lambda s: int(s[4:]))

您还可以尝试natsort这样的库,它将更普遍地处理自定义排序键。

现在,您可以迭代键并执行任何您想要的操作:

for key in sorted((k for k in section.keys() if k.startswith('file') and k[4:].isdigit()), key=lambda s: int(s[4:])):
    print(section[key])
3 年前
回复了 Mad Physicist 创建的主题 » Python——如何向numpy ndarray添加另一个“列”

带有 ndim == 1 隐式地是一行,而不是一列。最简单的方法是将其转换为一列并使用 np.concatenate :

np.concatenate((X_train, Y_train[:, None]), axis=1)

你也可以这样做 np.append :

np.append(X_train, Y_train[:, None], axis=1)

其他方法 Y_train 列中包括 Y_train.reshape(-1, 1) np.atleast_2d(Y_train) .

5 年前
回复了 Mad Physicist 创建的主题 » 我无法在Python3.5中加载空空间方法

这里有两个问题。首先是 null_space 直到1.1.0版才添加到scipy。这个 release notes 明确地提到这一点。

在这方面你有两个解决办法。从长远来看,最简单的方法就是升级scipy。另一种是从 scipy/linalg/decomp_svd.py :333 在GitHub上,把它放在你的实用程序中,然后使用它。

第二个问题是导入语法。一个 import statement 形式的 import x as y 只有当 x 是一个模块。要导入模块属性,需要使用 from x import a [as b] 符号:

from scipy.linalg import null_space
null_space(...)

或者,您可以使用 import x [as y] 表示法,通过模块访问属性:

import scipy.linalg.null_space
scipy.linalg.null_space(...)

或者

import scipy.linalg as la
la.null_space(...)

这个错误信息几乎告诉了你问题到底出在哪里,但是如果你还不知道该找什么的话,它就有点神秘了。

5 年前
回复了 Mad Physicist 创建的主题 » 用python编写n次函数

在嵌套函数中使用循环:

def compose(f, n):
    def fn(x):
        for _ in range(n):
            x = f(x)
        return x
    return fn

fn 将具有保留对 f n 你打电话来的 compose 和。

6 年前
回复了 Mad Physicist 创建的主题 » 在跟踪与python迭代器和生成器有关的函数时需要帮助

线 prev = next(iterator) 读取迭代器的第一个元素。

循环 for item in iterator: 一个接一个地检查剩下的项目。但请注意它不会屈服 item . 它的产量 prev ,它落后于一个元素 项目 .

转让 prev = item 保持滞后。当迭代器完成时(通过 最后的 你的生成器是后面的一个元素(产生了 倒数第二 线)。

你可以做一张桌子 普雷夫 项目 yield 发生:

 prev       item
-------------------
ABC 123    DEF 456
DEF 456    GHI 789
GHI 789    FOOTER

基本上,当 项目 到达最后一个元素, FOOTER ,迭代停止,但此时 普雷夫 把一切都交给了最后一个元素, GHI 789 .