作者nicha115 (cha)
看板Python
标题[问题] numpy frompyfunc用法
时间Sat Nov 28 10:10:15 2020
板上高手好,
我目前想用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://webptt.com/cn.aspx?n=bbs/Python/M.1606529417.A.CC5.html
※ 编辑: nicha115 (223.137.238.92 台湾), 11/28/2020 10:11:21
1F:推 TitanEric: 可以拆开 *array传function 11/28 12:00
2F:→ fiorentino: outvalue = output(*input_array) 11/28 19:46
3F:→ fiorentino: 你看这样可不可以 11/28 19:46
4F:→ nicha115: 但是这样是把array拆成n列,也就是n个引数而不是50引数 11/28 20:35
5F:→ nicha115: 我好像是应该用numpy.apply_along_axis才对的样子... 11/28 20:37
6F:推 art1: 似乎没办法直接解两层出来,最多只能用 *input_array[0] 11/28 21:25
7F:嘘 fiorentino: def test_fn(a): 11/29 14:20
8F:→ fiorentino: return a[0]+1, a[1]+2, a[2]+5 11/29 14:20
9F:→ fiorentino: outvalue = output(input_array) 11/29 14:21
10F:推 fiorentino: 不好意思好像不小心按到嘘了 11/29 18:05