据我所知,这些方法都在各自的DLL中实现为C函数,并且看起来ndimage版本更快(两种实现都不使用并行化代码,如调用blas或MKL).
此外,当我尝试通过运行以下代码检查它们返回相同的结果时,相等的断言失败.我无法从文档中弄清楚这两种方法之间究竟存在什么功能差异(文档也不是很清楚0相对于内核原点位置的含义;从示例中,我推断它在中心,但我可能错了).
from numpy import random, allclose
from scipy.ndimage.filters import convolve as convolveim
from scipy.signal import convolve as convolvesig
a = random.random((100, 100, 100))
b = random.random((10,10,10))
conv1 = convolveim(a,b, mode = 'constant')
conv2 = convolvesig(a,b, mode = 'same')
assert(allclose(conv1,conv2))
Run Code Online (Sandbox Code Playgroud)
谢谢!
是否有一个更快/更"Python化"的方式来访问关联到单个键的值比遍历它的其他词典列表(如图所示这里)?我正在寻找类似于listDict[:]['id']得到valules列表的东西,但我得到错误list indices must be integers, not str,即使listDict[0]['id']工作得很好.
更新 - 后续问题:如果密钥的值也是一个列表本身并且我只对获取它的前10个元素感兴趣怎么办?
使用列表理解时很容易做到[dic['id'][:10] for dic in listDict],但是在使用时itemgetter呢?map(itemgetter('id')[:10], listDict)似乎不起作用.
我问一个快速的访问方式,因为我有一个庞大的字典列表,我认为我可以获得与numpy数组相同的行为(就像切片只是原始数组的视图一样)用于字典列表.我想知道python是否有任何方法可以利用我的列表中的所有字典都具有相同的大小,以便使用快速跨式内存访问和一次复制大块数据而无需将中间表示作为列表列表.
谢谢!