- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有以下两个(假设是等价的)函数,看看哪个执行得更快(将用于处理大数据集)
import numpy as np
def interval_energy(array, start_intensity, intensity_window_length):
bins = np.bincount(array.ravel())
energy = 0
for i in range(start_intensity, min(start_intensity + intensity_window_length, len(bins))):
energy += bins[i] * (i ** 2)
print("Energy: {}".format(energy))
return energy
def interval_energy2(array, start_intensity, intensity_window_length):
flat_array = array.ravel()
energy = 0
for i in range(0, array.size):
if start_intensity <= flat_array[i] < (start_intensity + intensity_window_length):
energy += flat_array[i] ** 2
print("Energy2: {}".format(energy))
return energy
我正在使用以下代码来测试代码:
if __name__ == '__main__':
import timeit
setup = """
from interval_energy import interval_energy, interval_energy2
import numpy as np
a = np.random.randint(0, 3000, (150, 150, 150))
"""
t = timeit.Timer('interval_energy(a, 50, 2450)', setup)
t2 = timeit.Timer('interval_energy2(a, 50, 2450)', setup)
t3 = timeit.Timer("""
interval_energy(a, 50, 2450)
interval_energy2(a, 50, 2450)
""", setup)
print(t.timeit(5))
print(t2.timeit(5))
print(t3.timeit(5))
然而,在 interval_energy2 中,能量变量溢出并引发此错误:
RuntimeWarning: overflow encountered in long_scalars
更新 1:我注意到在第一个版本中,能量在创建时是 int 类型,在返回时是 int64 类型,而在函数的第二个版本中,它在创建时也是 int 类型,但保持 int32 直到它返回的点。因此溢出。为什么Python在一种情况下会自动转换变量而在另一种情况下不会自动转换变量
更新2:已确定这两个函数在理论上产生相同的结果。
更新 3:我正在使用 Python3.5.2 64 位。我读过 Python3 ONLY uses long,所以我在这里看到的(32 位整数溢出)应该是不可能的?
可能是因为 pandas/numpy 的 c-stack
更新 4:Windows 的 CPython 可能存在错误,因为相同的代码在 OSX/unix 上运行良好(相同的 python,两个系统上使用的 numpy 版本)
最佳答案
找到了。这是个好问题:
print type(flat_array[3])
<type 'numpy.int32'>
但是,在 bincount 之后:
print type(bins[3])
<type 'numpy.int64'>
显然分箱转换了数据类型,而您没有注意到!这就是 f5r5e5d 的修复起作用的原因。所以你应该在两者上都出错,但第一个被幸免。更改数组定义:
a = np.random.randint(0, 3000, (150, 150, 150),dtype=np.int64)
如 f5r5e5d 所建议。我没有收到任何错误并关闭,但结果不完全相同 - 这取决于您。
编辑目前似乎在 2.7.9 之后的版本中,其中 dtype 是数组的允许关键字,默认的 dtype 是根据给数组的值。使用 energy=np.int64()
将确保我们期望溢出的变量是一个大 int。
关于 python 错误?等效函数 - 一个变量溢出但另一个不溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40268201/
我已经使用 vue-cli 两个星期了,直到今天一切正常。我在本地建立这个项目。 https://drive.google.com/open?id=0BwGw1zyyKjW7S3RYWXRaX24tQ
您好,我正在尝试使用 python 库 pytesseract 从图像中提取文本。请找到代码: from PIL import Image from pytesseract import image_
我的错误 /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference
我已经训练了一个模型,我正在尝试使用 predict函数但它返回以下错误。 Error in contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]])
根据Microsoft DataConnectors的信息我想通过 this ODBC driver 创建一个从 PowerBi 到 PostgreSQL 的连接器使用直接查询。我重用了 Micros
我已经为 SoundManagement 创建了一个包,其中有一个扩展 MediaPlayer 的类。我希望全局控制这个变量。这是我的代码: package soundmanagement; impo
我在Heroku上部署了一个应用程序。我正在使用免费服务。 我经常收到以下错误消息。 PG::Error: ERROR: out of memory 如果刷新浏览器,就可以了。但是随后,它又随机发生
我正在运行 LAMP 服务器,这个 .htaccess 给我一个 500 错误。其作用是过滤关键字并重定向到相应的域名。 Options +FollowSymLinks RewriteEngine
我有两个驱动器 A 和 B。使用 python 脚本,我在“A”驱动器中创建一些文件,并运行 powerscript,该脚本以 1 秒的间隔将驱动器 A 中的所有文件复制到驱动器 B。 我在 powe
下面的函数一直返回这个错误信息。我认为可能是 double_precision 字段类型导致了这种情况,我尝试使用 CAST,但要么不是这样,要么我没有做对...帮助? 这是错误: ERROR: i
这个问题已经有答案了: Syntax error due to using a reserved word as a table or column name in MySQL (1 个回答) 已关闭
我的数据库有这个小问题。 我创建了一个表“articoli”,其中包含商品的品牌、型号和价格。 每篇文章都由一个 id (ID_ARTICOLO)` 定义,它是一个自动递增字段。 好吧,现在当我尝试插
我是新来的。我目前正在 DeVry 在线学习中级 C++ 编程。我们正在使用 C++ Primer Plus 这本书,到目前为止我一直做得很好。我的老师最近向我们扔了一个曲线球。我目前的任务是这样的:
这个问题在这里已经有了答案: What is an undefined reference/unresolved external symbol error and how do I fix it?
我的网站中有一段代码有问题;此错误仅发生在 Internet Explorer 7 中。 我没有在这里发布我所有的 HTML/CSS 标记,而是发布了网站的一个版本 here . 如您所见,我在列中有
如果尝试在 USB 设备上构建 node.js 应用程序时在我的树莓派上使用 npm 时遇到一些问题。 package.json 看起来像这样: { "name" : "node-todo",
在 Python 中,您有 None单例,在某些情况下表现得很奇怪: >>> a = None >>> type(a) >>> isinstance(a,None) Traceback (most
这是我的 build.gradle (Module:app) 文件: apply plugin: 'com.android.application' android { compileSdkV
我是 android 的新手,我的项目刚才编译和运行正常,但在我尝试实现抽屉导航后,它给了我这个错误 FAILURE: Build failed with an exception. What wen
谁能解释一下?我想我正在做一些非常愚蠢的事情,并且急切地等待着启蒙。 我得到这个输出: phpversion() == 7.2.25-1+0~20191128.32+debian8~1.gbp108
我是一名优秀的程序员,十分优秀!