看板 Python 關於我們 聯絡資訊
板上高手好, 我目前想用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
TitanEric: 可以拆開 *array傳function 11/28 12:00
fiorentino: outvalue = output(*input_array) 11/28 19:46
fiorentino: 你看這樣可不可以 11/28 19:46
nicha115: 但是這樣是把array拆成n列,也就是n個引數而不是50引數 11/28 20:35
nicha115: 我好像是應該用numpy.apply_along_axis才對的樣子... 11/28 20:37
art1: 似乎沒辦法直接解兩層出來,最多只能用 *input_array[0] 11/28 21:25
fiorentino: def test_fn(a): 11/29 14:20
fiorentino: return a[0]+1, a[1]+2, a[2]+5 11/29 14:20
fiorentino: outvalue = output(input_array) 11/29 14:21
fiorentino: 不好意思好像不小心按到噓了 11/29 18:05