小编Ale*_*x L的帖子

将日期时间列表拆分为天

我有一个日期排序列表:(有日间隔)

list_of_dts = [
              datetime.datetime(2012,1,1,0,0,0), 
              datetime.datetime(2012,1,1,1,0,0), 
              datetime.datetime(2012,1,2,0,0,0), 
              datetime.datetime(2012,1,3,0,0,0),
              datetime.datetime(2012,1,5,0,0,0),
              ]
Run Code Online (Sandbox Code Playgroud)

而且我想将它们分成每天的列表:

result = [
          [datetime.datetime(2012,1,1,0,0,0), datetime.datetime(2012,1,1,1,0,0)],
          [datetime.datetime(2012,1,2,0,0,0)],
          [datetime.datetime(2012,1,3,0,0,0)],
          [], # Empty list for no datetimes on day
          [datetime.datetime(2012,1,5,0,0,0)]
         ]
Run Code Online (Sandbox Code Playgroud)

在算法上,应该可以实现至少O(n).

也许类似于以下内容:(这显然不会处理错过的日子,并且丢弃最后的dt,但这是一个开始)

def dt_to_d(list_of_dts):
    result = []
    start_dt = list_of_dts[0]
    day = [start_dt]
    for i, dt in enumerate(list_of_dts[1:]):
        previous = start_dt if i == 0 else list_of_dts[i-1]
        if dt.day > previous.day or dt.month > previous.month or dt.year > previous.year: 
            # split to new sub-list
            result.append(day)
            day = []
            # Loop for …
Run Code Online (Sandbox Code Playgroud)

python grouping datetime date

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

在python中创建对象属性列表

我有一个对象列表:

[Object_1, Object_2, Object_3]
Run Code Online (Sandbox Code Playgroud)

每个对象都有一个属性:time:

Object_1.time = 20
Object_2.time = 30
Object_3.time = 40
Run Code Online (Sandbox Code Playgroud)

我想创建一个时间属性列表:

[20, 30, 40]
Run Code Online (Sandbox Code Playgroud)

获得此输出的最有效方法是什么?它不能迭代对象列表,对吧?:

items = []
for item in objects:
    items.append(item.time)
Run Code Online (Sandbox Code Playgroud)

python

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

截面颜色平均矩形

我写了一个快速的python脚本来返回屏幕周边的矩形的平均颜色.(这里的最终目标是在我的显示器周围放置RGB LED条,以便在电影期间获得发光效果 - 像这样(youtube),但更有趣,因为我自己制作它).

我目前正在使用autopy将屏幕作为位图("屏幕截图"),获取每个像素值以及RGB < - > HEX转换.

简化版:

step = 1
width = 5
height = 5

b = autopy.bitmap.capture_screen()

for block in border_block(width, height): # for each rectangle around the perimeter of my screen

    R,G,B = 0,0,0
    count = 0

    for x in xrange(block.x_min, block.x_max, step):
        for y in xrange(block.y_min, block.y_max, step):
            r,g,b = autopy.color.hex_to_rgb(image.get_color(x, y))
            R += r; G += g; B += b
            count += 1

   block.colour = "#{:06x}".format(autopy.color.rgb_to_hex(R/count,G/count,B/count)) …
Run Code Online (Sandbox Code Playgroud)

c python optimization screenshot python-imaging-library

9
推荐指数
1
解决办法
1607
查看次数

CUDA中的3个整数键查找

我想在大约一百万点的大数据集中查找3个整数(即[1 2 3]).

我目前正在使用MATLAB的Map(hashmap),对于每个点我都在做以下事情:

key = sprintf('%d ', [1 2 3]);       % 23 us
% key = '1 2 3 '
result = lookup_map( key );          % 32 us
Run Code Online (Sandbox Code Playgroud)

这是非常耗时的 - 100万分*55 us = 55秒.

我想用CUDA将它移到GPU上,但我不确定接近它的最佳方法.

我可以传输四个数组 - key1, key2, key3, result然后在键上执行二进制搜索,但每个键需要20次迭代(2 ^ 20 = 1048576).然后由于每个线程的并发内存访问,我也会有延迟.

是否存在针对CUDA中的并行(O(1),理想情况下)多键查找优化的数据结构?


问:三个整数的界限是什么?查找了哪些数据?

当前整数键可以在0到约75,000之间,但将来可能更大(200,000+).

出于这个问题的目的,我们可以假设它result是一个介于0和数据集大小之间的整数.


问:为什么不将所有三个数字打包成一个64位数字(每个数字21位给出的范围为0-2,097,152).并使用它来索引到稀疏数组?

>> A = uint64(ones(10));
>> sparse_A = sparse(A)
??? Undefined function or method 'sparse' for input arguments of type 'uint64'.

>> A = int64(ones(10));
>> sparse_A …
Run Code Online (Sandbox Code Playgroud)

matlab cuda hashmap lookup-tables data-structures

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

每秒运行多个函数,将结果写入文件

我试图每秒运行三个函数(每个函数最多需要1秒执行).然后,我想存储每个函数的输出,并将它们写入单独的文件.

目前我正在使用Timers进行延迟处理.(我可以继承Thread,但这对于这个简单的脚本来说有点复杂)

def main:
    for i in range(3):
        set_up_function(i)
        t = Timer(1, run_function, [i])
        t.start()
    time.sleep(100) # Without this, main thread exits

def run_function(i):
    t = Timer(1, run_function, [i])
    t.start()
    print function_with_delay(i)
Run Code Online (Sandbox Code Playgroud)

处理function_with_delay输出的最佳方法是什么?将结果附加到每个函数的全局列表中?

然后我可以在我的主函数结束时放这样的东西:

...
while True:
    time.sleep(30) # or in a try/except with a loop of 1 second sleeps so I can interrupt
    for i in range(3):
        save_to_disk(data[i])
Run Code Online (Sandbox Code Playgroud)

思考?


编辑:添加我自己的答案作为可能性

python multithreading timer

5
推荐指数
1
解决办法
966
查看次数

三维矩阵中周围单元的索引和值

我想在3d矩阵中返回单元格周围的8个单元格的索引和值.

mat = rand(5,5,5);

% Cell of interest
pos = [3 3 3]
pos_val = mat(pos(1), pos(2), pos(3))

% Surrounding cells
surrounding_pos = [pos(1)-1:pos(1)+1; pos(2)-1:pos(2)+1; pos(2)-1:pos(2)+1]
surrounding_val = mat(surrounding_pos(1,:), surrounding_pos(2,:), surrounding_pos(3,:))
Run Code Online (Sandbox Code Playgroud)

这适用于矩阵中心的值,但如果pos位于边缘,则会中断.(例如,如果pos是[3,4,5],则around_pos 将包括[3,4,6],这是超出范围)

我显然可以删除around_pos值<0或> size(mat),但这似乎不是一个非常糟糕的MATLABian方法.有任何想法吗?

matlab matrix

5
推荐指数
2
解决办法
811
查看次数

如何使颜色在iPython 5中可读?

我刚刚升级到iPython 5,使用深色终端背景很难看清所有颜色。有没有办法调整这些?

ipython

5
推荐指数
1
解决办法
501
查看次数

如何在django中将datetime转换为python中的字符串

我的模型上有一个日期时间对象.我发送它到视图,但在HTML中我不知道写什么来格式化它.

我在尝试

{{ item.date.strftime("%Y-%m-%d")|escape }}
Run Code Online (Sandbox Code Playgroud)

但我明白了

TemplateSyntaxError: Could not parse some characters: item.date.strftime|("%Y-%m-%d")||escape
Run Code Online (Sandbox Code Playgroud)

当我刚刚使用时

{{ item.date|escape }}
Run Code Online (Sandbox Code Playgroud)

它正在工作,但现在我想要的格式.

有什么建议?

python django

4
推荐指数
1
解决办法
5638
查看次数

Python - 在两个远程服务器之间传输文件,除了python脚本

我想两个服务器之间的文件从复制localServer,从说server-Aserver-B.我在python中使用paramiko包.

因此,有三个服务器,即localServer,server-Aserver-B.请看下面的代码,这是自我解释的,请让我知道我哪里出错了.

我正在使用的算法:

  1. 我正在尝试运行paramiko_test.py文件localServer.
  2. paramiko_test.py执行copy.py文件server-A.
  3. copy.py使用SFTP将source.txt文件复制server-Aserver-B.

当我跑步copy.pyserver-A,它正常工作.但是,当我运行paramiko_test.pylocalServer(间接执行copy.pyserver-A),它不工作!

从日志中,我知道了,有从成功连接server-Aserver-B,但在这之后的SFTP部分没有工作!

问题:我们可以在SFTP客户端中调用SFTP客户端吗?有没有更好的方法在两台服务器之间复制文件?

我帮我错了.

server-A,file:copy.py:

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('<server-B-IP>', username='serverB', password='passwd')

print "connected successfully!"

sftp = ssh.open_sftp()
print sftp
sftp.put('source.txt','/home/serverB/destination.txt' )
sftp.close()
print "copied successfully!"

ssh1.close() …
Run Code Online (Sandbox Code Playgroud)

python paramiko

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

版本号大于1.18.10的正则表达式

我需要验证应用程序的版本号是否大于1.18.10.在这种情况下,正则表达式应该如何?

python regex

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