![](/img/trans.png)
[英]Why do I get the 'loop of ufunc does not support argument 0 of type numpy.ndarray' error for log method?
[英]Why do I get the 'loop of ufunc does not support argument 0 of type int' error for numpy.exp?
我有一個數據框,我想對列中的行子集執行指數計算。 我嘗試了三個版本的代碼,其中兩個有效。 但我不明白為什么一個版本會給我錯誤。
import numpy as np
剛看到你的帖子,想回答一下。
我猜您的問題發生是因為某些 numpy 函數需要顯式地使用浮點類型參數,而您使用np.exp(test)
等代碼將int數據放入參數中。
解決方案可能是:
import numpy as np
your_array = your_array.float()
output = np.exp(your_array)
# OR
def exp_test(x)
x.float()
return np.exp(x)
output = exp_test(your_array)
你會檢查它是否對你有用嗎? 我很樂意幫忙。
問題的根本原因在 Yoshiaki 的回答中是正確的
我猜你的問題發生是因為一些 numpy 函數需要顯式地使用浮點類型參數,而你像 np.exp(test) 這樣使用代碼將 int 數據放入參數中。
然而,他的解決方案對我不起作用,所以我稍微調整了一下,讓它對我有用
your_array = your_array.astype(float)
output = np.exp(your_array)
雖然這個問題已經得到了充分的回答,但我還是想分享一下我在這個問題上的經驗,希望能對這類問題以及造成這些問題的原因有更多的了解。 根據我收集的信息,問題與“numpy 與非 numpy 數據類型”有關。 這是一個最小的例子:
import numpy as np
arr_float = np.array([1., 2., 3.], dtype=object)
arr_float64 = arr_float.astype(float) # The solution proposed in other answers
np.exp(arr_float) # This throws the TypeError
np.exp(arr_float64) # This works!
可能有多種原因導致“看起來像浮點數”的對象類型數組結束,可能與從以不正確類型存儲的數據幀中提取的分析數據有關(由於存在不可轉換的條目),或者numpy 和另一種媒體(如 pandas)之間的一些來回轉換。
總之-小心數據類型, float
≠ np.float64
!
test = pd.loc[(pd['a'] > 0) & (pd['a'] < 650), 'a'].values
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.