我有一个日期排序列表:(有日间隔)
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) 我有一个对象列表:
[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脚本来返回屏幕周边的矩形的平均颜色.(这里的最终目标是在我的显示器周围放置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) 我想在大约一百万点的大数据集中查找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) 我试图每秒运行三个函数(每个函数最多需要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)
思考?
编辑:添加我自己的答案作为可能性
我想在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方法.有任何想法吗?
我的模型上有一个日期时间对象.我发送它到视图,但在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)
它正在工作,但现在我想要的格式.
有什么建议?
我想两个服务器之间的文件从复制localServer,从说server-A来server-B.我在python中使用paramiko包.
因此,有三个服务器,即localServer,server-A和server-B.请看下面的代码,这是自我解释的,请让我知道我哪里出错了.
我正在使用的算法:
paramiko_test.py文件localServer.paramiko_test.py执行copy.py文件server-A.copy.py使用SFTP将source.txt文件复制server-A到server-B.当我跑步copy.py时server-A,它正常工作.但是,当我运行paramiko_test.py从localServer(间接执行copy.py的server-A),它不工作!
从日志中,我知道了,有从成功连接server-A到server-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)