小编Qun*_*zed的帖子

极坐标比 numpy 慢?

我正在考虑在解析问题polars中使用 in 代替numpy,将结构化文本文件转换为字符表并在不同的列上进行操作。然而,这似乎比我执行的大多数操作polars慢大约 5 倍。numpy我想知道为什么会出现这种情况,以及考虑到应该polars更快,我是否做错了什么。

例子:

import requests
import numpy as np
import polars as pl

# Download the text file
text = requests.get("https://files.rcsb.org/download/3w32.pdb").text

# Turn it into a 2D array of characters
char_tab_np = np.array(file.splitlines()).view(dtype=(str,1)).reshape(-1, 80)

# Create a polars DataFrame from the numpy array
char_tab_pl = pl.DataFrame(char_tab_np)

# Sort by first column with numpy
char_tab_np[np.argsort(char_tab_np[:,0])]

# Sort by first column with polars
char_tab_pl.sort(by="column_0")
Run Code Online (Sandbox Code Playgroud)

使用%%timeitin 时Jupyter …

python numpy python-polars

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

接受两个函数并返回连接函数的 Python 函数?

我需要编写一个名为'concat' 的python 函数,它接受任意两个函数作为输入,并返回一个函数,该函数是两个输入函数的连接函数(即它接受f1 和f2,并返回f1?f2)。

我试过这个:

def concat(f1,f2):
    return f1(f2)
Run Code Online (Sandbox Code Playgroud)

例如,如果 f1 和 f2 是:

def f1(x):
    return x+2
def f2(x):
    return x*2
Run Code Online (Sandbox Code Playgroud)

然后, concat(f1,f2) 应该返回: (x*2)+2

我希望能够像这样使用它:

a = concat(f1,f2)
a(5)
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:

类型错误:不支持 + 的操作数类型:'function' 和 'int'

我知道我可以这样定义函数:

def concat(f1,f2,x): 
    return f1(f2(x))
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的;我希望能够创建 concat 函数的实例,然后可以用任何 x 调用它。

python function concatenation

2
推荐指数
1
解决办法
62
查看次数

标签 统计

python ×2

concatenation ×1

function ×1

numpy ×1

python-polars ×1