簡體   English   中英

python列表理解多個返回函數到numpy數組

[英]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.

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