我有2个数组:
mask:值为0和1,dtype = uint8
>>> mask
array([[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[1, 1, 1, ..., 0, 0, 0],
...,
[1, 1, 1, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]], dtype=uint8)
Run Code Online (Sandbox Code Playgroud)
和prova_clip
>>> prova_clip
array([[289, 281, 271, ..., 257, 255, 255],
[290, 284, 268, ..., 260, 260, 259],
[294, 283, 264, ..., 265, 263, 257],
...,
[360, 359, 360, ..., 335, …Run Code Online (Sandbox Code Playgroud) 我想矢量化以下函数.参数是numpy数组.
def euclidean_distance(dl, dr):
return math.sqrt(((dl - dr) ** 2).sum())
Run Code Online (Sandbox Code Playgroud)
我做了以下事情
v_u = numpy.vectorize(euclidean_distance)
Run Code Online (Sandbox Code Playgroud)
我正在做以下的电话
v_u(numpy.array([[10, 20, 30], [4, 5, 6]]), numpy.array([1, 2, 3]))
Run Code Online (Sandbox Code Playgroud)
我想的是,我回来它包含了欧氏距离的阵列[1, 2, 3]有[10, 20, 30], [4, 5, 6].
我想我错过了一些明显的东西.
编辑:
以下是我得到的错误
AttributeError: 'int' object has no attribute 'sum'
Run Code Online (Sandbox Code Playgroud)
很明显,dl并且dr作为单个元素传递但不作为数组传递......所以我想知道是否有人可以纠正它以便它在数组上运行.
非常感谢
我试图压缩一个巨大的python对象〜15G,并将其保存在磁盘上.由于需求限制,我需要尽可能地压缩这个文件.我目前正在使用zlib.compress(9).我主要担心的是,在压缩过程中所占用的内存超过了我在系统32g上可用的内存,并且预计对象的大小会增加.是否有更有效/更好的方法来实现这一目标.谢谢.
更新:还要注意我要保存的对象是一个稀疏的numpy矩阵,我在压缩前序列化数据,这也增加了内存消耗.由于我在序列化后不需要python对象,gc.collect()会帮忙吗?
我正试图在我的ubuntu机器上进行繁重的科学计算.代码是用Python编写的,并标记为可执行文件.然而,在大约一个小时之后,计算终止,除了"终止"之外没有任何错误消息,就像系统刚刚运行命令"killall python"一样.
为什么ubuntu会终止我的计算?没有无限循环,解决方案很好地收敛(但是程序的一部分需要一些优化).
谢谢!