小编B. *_* M.的帖子

Matplotlib相当于pygame翻转

我有一个快速动画的程序,它在pygame下运行得很好,而且由于技术原因,我需要使用matplotlib或其他普遍的模块来做同样的事情.

程序结构大致如下:

pygame.init()        
SURF = pygame.display.set_mode((500, 500))
arr = pygame.surfarray.pixels2d(SURF) # a view for numpy, as a 2D array
while ok:
    # modify some pixels of arr
    pygame.display.flip()
pygame.quit()
Run Code Online (Sandbox Code Playgroud)

我没有低级别的matplotlib经验,但我认为可以用matplotlib做同等的事情.换一种说法 :

如何共享图形的位图,修改一些像素并刷新屏幕?

这是一个最小的工作例子,它在我的计算机上翻转250帧/秒(超过屏幕......):

import pygame,numpy,time
pygame.init()
size=(400,400)        
SURF = pygame.display.set_mode(size)
arr = pygame.surfarray.pixels2d(SURF) # buffer pour numpy   
t0=time.clock()

for counter in range(1000):
        arr[:]=numpy.random.randint(0,0xfffff,size)
        pygame.display.flip()      
pygame.quit()

print(counter/(time.clock()-t0))
Run Code Online (Sandbox Code Playgroud)

编辑

我在答案中尝试了指示:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig = plt.figure()


def f(x, y):
    return np.sin(x) + np.cos(y) …
Run Code Online (Sandbox Code Playgroud)

python pygame numpy matplotlib

8
推荐指数
4
解决办法
477
查看次数

为什么不是"numpy.any"懒惰(短路)

我不明白为什么还没有进行如此基本的优化:

In [1]: %timeit np.ones(10**6).any()
100 loops, best of 3: 7.32 ms per loop

In [2]: %timeit np.ones(10**7).any()
10 loops, best of 3: 59.7 ms per loop
Run Code Online (Sandbox Code Playgroud)

即使结论是第一项的证据,也扫描整个阵列.

python performance numpy

5
推荐指数
2
解决办法
662
查看次数

标签 统计

numpy ×2

python ×2

matplotlib ×1

performance ×1

pygame ×1