我在这里和那里回答几个问题.我经常测试我和其他人的解决方案有多快.
是否有一个简单的框架来全面了解各种解决方案的速度有多快?
考虑数据帧 df
df = pd.DataFrame({
'Group': list('QLCKPXNLNTIXAWYMWACA'),
'Value': [29, 52, 71, 51, 45, 76, 68, 60, 92, 95,
99, 27, 77, 54, 39, 23, 84, 37, 99, 87]
})
Run Code Online (Sandbox Code Playgroud)
我想总结Value按不同值分组的列Group.我有三种方法可以做到这一点.
import pandas as pd
import numpy as np
from numba import njit
def sum_pd(df):
return df.groupby('Group').Value.sum()
def sum_fc(df):
f, u = pd.factorize(df.Group.values)
v = df.Value.values
return pd.Series(np.bincount(f, weights=v).astype(int), pd.Index(u, name='Group'), name='Value').sort_index()
@njit
def wbcnt(b, w, k):
bins = np.arange(k)
bins = …Run Code Online (Sandbox Code Playgroud) 我有一个5个数字的数组:
A = [10, 20, 40, 80, 110]
Run Code Online (Sandbox Code Playgroud)
我需要创建一个长度为10的新数组.
额外的数字可以是两个#之间的平均数A.
例如:编辑B = [10,15,20,30,40,60,80,95,110]
是否可以使用scipy或numpy功能?
我目前正在寻找可以交错2 numpy.ndarray的方法.这样的
>>> a = np.random.rand(5,5)
>>> print a
[[ 0.83367208 0.29507876 0.41849799 0.58342521 0.81810562]
[ 0.31363351 0.69468009 0.14960363 0.7685722 0.56240711]
[ 0.49368821 0.46409791 0.09042236 0.68706312 0.98430387]
[ 0.21816242 0.87907115 0.49534121 0.60453302 0.75152033]
[ 0.10510938 0.55387841 0.37992348 0.6754701 0.27095986]]
>>> b = np.random.rand(5,5)
>>> print b
[[ 0.52237011 0.75242666 0.39895415 0.66519185 0.87043142]
[ 0.08624797 0.66193953 0.80640822 0.95403594 0.33977566]
[ 0.13789573 0.84868366 0.09734757 0.06010175 0.48043968]
[ 0.28871551 0.62186888 0.44603741 0.3351644 0.6417847 ]
[ 0.85745394 0.93179792 0.62535765 0.96625077 0.86880908]]
>>>
Run Code Online (Sandbox Code Playgroud)
print c …
我有一个像下面这样的pandas数据帧:
A B C D
0 7 2 5 2
1 3 3 1 1
2 0 2 6 1
3 3 6 2 9
Run Code Online (Sandbox Code Playgroud)
可以有100个列,在上面的例子中我只显示了4个.
我想为每一行及其值提取top-k列.
我可以使用以下方法获得top-k列:
pd.DataFrame({n: df.T[column].nlargest(k).index.tolist() for n, column in enumerate(df.T)}).T
Run Code Online (Sandbox Code Playgroud)
其中,对于k = 3给出:
0 1 2
0 A C B
1 A B C
2 C B D
3 D B A
Run Code Online (Sandbox Code Playgroud)
但我想拥有的是:
0 1 2 3 4 5
0 A 7 C 5 B 2
1 A 3 B 3 C 1
2 C …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种以以下方式在python中合并两个numpy数组的快速方法。例如,如果我有以下两个数组,
arr1 = np.array([0.0, 1.0, 11.0, 111.0])
arr2 = np.array([0.5, 1.5, 11.5, 111.5])
Run Code Online (Sandbox Code Playgroud)
那么我希望合并后的数组(例如arr3)包含arr1和arr2在交替索引中的元素。喜欢,
arr3 = np.array([0.0, 0.5, 1.0, 1.5, 11.0, 11.5, 111.0, 111.5])
Run Code Online (Sandbox Code Playgroud)
我意识到我可以使用两个for循环来实现这一点,在其中我可以将arr1和的元素存储在arr2(of arr3)的备用索引中。但是,在我的实际工作中,我将处理庞大的数组(arr1和arr2),并且我想确保自己使用的是高效且快速的方法来实现此功能(即创建arr3)
我将不胜感激任何帮助。