2017-04-10 78 views
-1

numpy.fromfunction使得與參數作爲陣列的功能的單個調用,如描述在例如this answer。所以要使用numpy.from函數,需要該函數接受數組參數並返回一個數組。如何根據爲每個元素調用的函數製作numpy數組?

如何使numpy的陣列基於稱爲對於每個元件,其中函數返回標爲元件的功能,如例如使用max函數像下面?

z = numpy.fromfunction(max, (2, 2), dtype=int) 

這將然後返回:

[[0 1] 
[1 1]] 
+0

不知道我得到您的問題:z將是標量,爲什麼它應該是一個數組? – Roelant

+2

你爲什麼不只是使用'np.max'或者如果你想使用其他功能,那是什麼是什麼呢?在numpy中沒有等價物嗎? – Kasramvd

+0

@ Kasramvd:Max只是一個示例函數;這個問題仍然被認爲是一個通用解決方案。 – EquipDev

回答

2

您可以使用numpy.vectorize

vmax = numpy.vectorize(max) 
z = numpy.fromfunction(vmax, (2, 2), dtype=int) 

請雖然注意從文檔這樣一句話:

矢量化功能主要由fo提供方便,而不是表現。實現本質上是一個for循環。

就其性質而言numpy.vectorize會很慢。在這個例子中numpy.maximum將快得多:

z = numpy.fromfunction(numpy.maximum, (2, 2), dtype=int) 
+0

對於一般的解決辦法是罰款。寫這樣的,當我的工程業績會更高,如果代碼,然後執行太慢我稍後會優化:-) – EquipDev

+1

我明白了。我只是爭辯說,你應該嘗試儘可能使用'numpy'功能。 –

相關問題