簡體   English   中英

為什么我會收到 numpy.exp 的“ufunc 循環不支持 int 類型的參數 0”錯誤?

[英]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)之間的一些來回轉換。

總之-小心數據類型floatnp.float64

test = pd.loc[(pd['a'] > 0) & (pd['a'] < 650), 'a'].values

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM