簡體   English   中英

python中對數組的快速數學運算

[英]Fast math operations on an array in python

我有一個相當簡單的數學運算,我想在數組上執行。 讓我寫出這個例子:

A = numpy.ndarray((255, 255, 3), dtype=numpy.single)
# ..
for i in range(A.shape[0]):
    for j in range(A.shape[1]):
        x = simple_func1(i)
        y = simple_func2(j)
        A[i, j] = (alpha * x * y + beta * x**2 + gamma * y**2, 1, 0)

所以基本上,(i,j)和該值的3個值之間存在映射(這是用於可視化)。 我想把它卷起來以某種方式對此進行矢量化,但我不確定如何或如果可以的話。 謝謝。

這是矢量化版本:

i = arange(255)
j = arange(255)
x = simple_func1(i)
y = simple_func2(j)
y = y.reshape(-1,1)    

A = alpha * x * y + beta * x**2 + gamma * y**2 # broadcasting is your friend here

如果要用1和0填充最后一個坐標:

B = empty(A.shape+(3,))
B[:,:,0] = A
B[:,:,1] = 1 # broadcasting again
B[:,:,2] = 0

您必須更改simple_funcN,以便將數組作為輸入,並將數組創建為輸出。 之后,你可以在這里查看numpy.meshgrid()或cartesian()函數來構建坐標數組。 之后,您應該能夠使用坐標數組來填充A單線。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM