[問題] numpy frompyfunc用法

看板Python作者 (cha)時間3年前 (2020/11/28 10:10), 3年前編輯推噓2(316)
留言10則, 4人參與, 3年前最新討論串1/1
板上高手好, 我目前想用numpy的frompyfunc對np.array進行廣播 但是我是要對“每一列”進行計算(不是對每一列的每個值) 例如我要讓我輸入的引數是每一列假設3個数,然後輸出一個list def test_fn(a,b,c): return a+1, b+2, c+5 input_array = np.array([[1,3,5], [2,6,8]]) output = np.frompyfunc(test_fn, 3, 1) 然後我這邊好像只能用這樣寫法: outvalue = output(input_array[:, 0], input_array[:, 1], input_array[:, 2]) 也就是我需要分別將a,b,c三個引數分別輸入, 但我想知道有沒有寫法是我只要輸入input_array變數就可以的? 不然如果一列50個引數我不就要輸入50次? 感謝大家~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.238.92 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1606529417.A.CC5.html ※ 編輯: nicha115 (223.137.238.92 臺灣), 11/28/2020 10:11:21

11/28 12:00, 3年前 , 1F
可以拆開 *array傳function
11/28 12:00, 1F

11/28 19:46, 3年前 , 2F
outvalue = output(*input_array)
11/28 19:46, 2F

11/28 19:46, 3年前 , 3F
你看這樣可不可以
11/28 19:46, 3F

11/28 20:35, 3年前 , 4F
但是這樣是把array拆成n列,也就是n個引數而不是50引數
11/28 20:35, 4F

11/28 20:37, 3年前 , 5F
我好像是應該用numpy.apply_along_axis才對的樣子...
11/28 20:37, 5F

11/28 21:25, 3年前 , 6F
似乎沒辦法直接解兩層出來,最多只能用 *input_array[0]
11/28 21:25, 6F

11/29 14:20, 3年前 , 7F
def test_fn(a):
11/29 14:20, 7F

11/29 14:20, 3年前 , 8F
return a[0]+1, a[1]+2, a[2]+5
11/29 14:20, 8F

11/29 14:21, 3年前 , 9F
outvalue = output(input_array)
11/29 14:21, 9F

11/29 18:05, 3年前 , 10F
不好意思好像不小心按到噓了
11/29 18:05, 10F
文章代碼(AID): #1VmR69p5 (Python)