[英]python list comprehension for multiple return function to numpy array
從該線程中,我們可以看到如何將多個返回值從列表理解解壓縮到元組。
def f(x):
return 2*x, x*x
x = range(1, 4)
xlist, ylist = zip(*[f(value) for value in x])
有沒有辦法直接對一個numpy數組執行此操作? 或者是對此的唯一解決方案:
xlist = np.asarray(xlist)
?
要使用numpy.array
做到這numpy.array
,只需將參數作為數組本身傳遞即可。 函數中的操作將映射到array參數上,並返回兩個數組的元組:
>>> xlist, ylist = f(np.asarray(x))
>>> xlist
array([2, 4, 6])
>>> ylist
array([1, 4, 9])
無需zip
或列表理解。 您也不需要更改f
函數:
>>> import numpy as np
>>> x = np.arange(1, 4)
>>> array1, array2 = f(x)
>>> array1
array([2, 4, 6])
>>> array2
array([1, 4, 9])
如果x
是一個數組, 2 * x
表示的每個元素x
將由乘以2
:
>>> 2 * x
array([2, 4, 6])
您可以使用:
xlist,ylist = np.fromiter(
itertools.chain.from_iterable(f(value) for value in x),
dtype=np.int_,
count=len(x)*2
).reshape((-1,2)).T
要么
xlist,ylist = np.array([f(value) for value in x]).T
但是,如其他答案所建議的那樣,直接在數組上運行的方法可能更具可讀性,並且速度也會更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.