→ gmccntzx1: 你的第一個寫法,給 np.reshape 的參數就是 3 個 09/13 23:55
→ gmccntzx1: int: 60, 60, 1 09/13 23:55
→ gmccntzx1: 修正,正確來說是 4 個,第一個參數由 df.apply 提供 09/13 23:57
→ gmccntzx1: 即 np.reshape(x_train, 60, 60, 1) # <- 錯誤 09/13 23:58
→ gmccntzx1: args要吃的參數型態就是 tuple 09/14 00:03
→ gmccntzx1: 所以給參數的方式就像這樣: args=(x, y, z, ...) 09/14 00:04
→ gmccntzx1: 其中 x, y, z 可以是任何型態 (視對象 func 而給) 09/14 00:05
我前面第一行的程式若改成x_train = x_train.apply(np.reshape, args =((60,60,1)) )的話也會出現同樣的錯誤耶
我也有上網先去看apply的文件我知道要傳入tuple,但是若將(60,60,1)括號起來他不就也變成tuple了嗎,為什麼還要一個逗號呢
※ 編輯: worthy0429 (219.70.213.17), 09/14/2018 00:25:52
→ gmccntzx1: 不,你看一下我上面的例子 args=(x, y, z...) 09/14 00:36
→ gmccntzx1: 如果僅僅將 60, 60, 1 這三個數包起來,就代表你只給了 09/14 00:36
→ gmccntzx1: 修正:就代表 args 拿到 3 個參數,分別為 60, 60, 1 09/14 00:38
→ gmccntzx1: 寫成 args=((60, 60, 1), ) 才表示 args 拿到一個參數 09/14 00:38
→ gmccntzx1: 叫做 (60, 60, 1) 的 tuple 09/14 00:39
→ gmccntzx1: 然後 trailing comma 可以看這篇解釋 09/14 00:40
→ gmccntzx1: 簡單來說,如果你沒有給 trailing comma, 僅有單一元素 09/14 00:42
→ gmccntzx1: 的 tuple 會和 expression 混淆 09/14 00:43
→ gmccntzx1: * generator expression 09/14 00:44
→ gmccntzx1: 或是其他因為內容很長需要多行分段的 code 09/14 00:45
我有看到,就是a=(1)這樣是int,a=(1),這樣會是tuple,如果單一元素後面家要加逗號才會變tuple
,但是我在想args=(x,y,z),像我這樣子(60,60,1)括號刮起來,不就等於x=(60,60,1)所以已經是tuple了不用再逗號了吧?
我就是一直卡在這邊不好意思,我有聽懂你那個3個int的說法,只是不太清楚為什麼有括號了還是3個int..,你剛傳的那幾個網址
我都有先看過了可是還是覺得卡卡的怪怪的想釐清一下自己的想法
※ 編輯: worthy0429 (219.70.213.17), 09/14/2018 00:51:28
→ gmccntzx1: 然後這個行為在 list, dict 上也可以用,但不加上也不 09/14 00:47
→ gmccntzx1: 會影響 09/14 00:47
→ gmccntzx1: 照你的例子來講,`a=(1),` 和 `a=(1,)` 的 a 都是 09/14 01:05
→ gmccntzx1: tuple 09/14 01:05
→ gmccntzx1: 今天如果 args 只拿到 1 個參數,但你仍要確保 args 是 09/14 01:06
→ gmccntzx1: tuple ,你要怎麼做? 09/14 01:07
→ gmccntzx1: 情況就是 args=(x),x 可以是任何型別。 09/14 01:08
這個例子我有看懂,但是若是將裡面的1全部改成'1,2',這樣就會全部都是tuple呀,這跟我60,60,1是一樣的吧..
※ 編輯: worthy0429 (140.118.207.2), 09/14/2018 17:17:09
抱歉,真的很感謝你但是我是不是鬼打牆了QAQ
※ 編輯: worthy0429 (140.118.207.2), 09/14/2018 17:19:17
就是單一元素需要trail comma,但是60,60,1有三個元素哩
※ 編輯: worthy0429 (140.118.207.2), 09/14/2018 17:20:39