Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy数组的分数部分_Python_Numpy_Python 2.7 - Fatal编程技术网

Python numpy数组的分数部分

Python numpy数组的分数部分,python,numpy,python-2.7,Python,Numpy,Python 2.7,我只需要得到数组的小数部分。 使用numpy或简单的pythonmodf函数很方便 如果我们使用正分数数据的大数组,例如,可以大到(1000000,3),那么更方便的方法是: numpy.modf(array)[0] array-numpy.trunc(array) 在我看来,2在内存使用方面更快更便宜。。。但不确定。python和numpy专家是怎么想的?我不是专家,所以我必须使用timeit模块来检查速度。我使用IPython(这使计时变得非常简单),但即使没有它,timeit模块也可

我只需要得到数组的小数部分。 使用numpy或简单的pythonmodf函数很方便

如果我们使用正分数数据的大数组,例如,可以大到(1000000,3),那么更方便的方法是:

numpy.modf(array)[0]  
array-numpy.trunc(array)

在我看来,2在内存使用方面更快更便宜。。。但不确定。python和numpy专家是怎么想的?

我不是专家,所以我必须使用
timeit
模块来检查速度。我使用IPython(这使计时变得非常简单),但即使没有它,
timeit
模块也可能是一种方法

In [21]: a = numpy.random.random((10**6, 3))

In [22]: timeit numpy.modf(a)[0]
10 loops, best of 3: 90.1 ms per loop

In [23]: timeit a-numpy.trunc(a)
10 loops, best of 3: 135 ms per loop

In [24]: timeit numpy.mod(a, 1.0)
10 loops, best of 3: 68.3 ms per loop

In [25]: timeit a % 1.0
10 loops, best of 3: 68.1 ms per loop
最后两个是等价的。我对内存使用了解不多,但如果
modf(a)[0]
a-numpy.trunc(a)
都没有比直接使用mod使用更多内存,我会感到惊讶


[顺便说一句,如果您的代码符合您的要求,并且您只对改进感兴趣,那么您可能会感兴趣。我仍然不能很好地理解分界点在哪里,但这更像是他们的一杯茶。]

谢谢,我没有想到%1,我认为这是最方便的解决方案,因为它使用纯python regardsI应该希望“专家”也使用
timeit
来检查速度。在橡胶与路面接触的地方,在实际测量之前(通常)无法知道某些东西的性能如何。如果使用%=1,则可以获得稍好的性能。而不是使用新数组来存储值,因为它会在适当的位置修改数组