小编Ard*_*lan的帖子

Numpy:将值插入数组的最快方法,以便数组按顺序排列

假设我有一个数组my_array和一个奇异值my_val。(请注意,my_array它始终是排序的)。

my_array = np.array([1, 2, 3, 4, 5])
my_val = 1.5
Run Code Online (Sandbox Code Playgroud)

因为my_val是 1.5,我想把它放在 1 和 2 之间,给我数组[1, 1.5, 2, 3, 4, 5]

我的问题是:my_array随着任意大的增长,生成有序输出数组的最快方法是什么(即以微秒为单位)?

我想到的原始方法是将值连接到原始数组然后排序:

arr_out = np.sort(np.concatenate((my_array, np.array([my_val]))))
[ 1.   1.5  2.   3.   4.   5. ]
Run Code Online (Sandbox Code Playgroud)

我知道这np.concatenate很快,但我不确定如何np.sort随着my_array增长而扩展,即使它my_array总是会被排序。

编辑:

我已经为接受答案时列出的各种方法编制了时间:

输入:

import timeit

timeit_setup = 'import numpy as np\n' \
               'my_array = np.array([i for i in range(1000)], dtype=np.float64)\n' \
               'my_val = …
Run Code Online (Sandbox Code Playgroud)

python sorting numpy concatenation

7
推荐指数
1
解决办法
2372
查看次数

Pandas:使用 read_csv 解析不同列中的日期

我有一个 ascii 文件,其中的日期格式如下:

Jan 20 2015 00:00:00.000
Jan 20 2015 00:10:00.000
Jan 20 2015 00:20:00.000
Jan 20 2015 00:30:00.000
Jan 20 2015 00:40:00.000
Run Code Online (Sandbox Code Playgroud)

将文件加载到 Pandas 时,上面的每一列在 Pandas 数据框中都有自己的列。我尝试了以下变体:

from pandas import read_csv
from datetime import datetime

df = read_csv('file.txt', header=None, delim_whitespace=True,
              parse_dates={'datetime': [0, 1, 2, 3]},
              date_parser=lambda x: datetime.strptime(x, '%b %d %Y %H %M %S'))
Run Code Online (Sandbox Code Playgroud)

我收到几个错误:

TypeError: <lambda>() takes 1 positional argument but 4 were given
ValueError: time data 'Jun 29 2017 00:35:00.000' does not match format '%b %d %Y …
Run Code Online (Sandbox Code Playgroud)

python datetime parsing dataframe pandas

3
推荐指数
1
解决办法
6534
查看次数

标签 统计

python ×2

concatenation ×1

dataframe ×1

datetime ×1

numpy ×1

pandas ×1

parsing ×1

sorting ×1