我不知道這個程序的問題是什麼(我幾天前開始學習python)。我寫了這個程序,它工作正常b=np.array([[1,2,2], [3,2,1], [3,1,5]])
,但是當我使用不同的陣列b = np.array([[1,2,3], [3,2,1], [3,1,5]])
它給出了錯誤。謝謝大家,我修復了第一個錯誤。TypeError:idle_formatwarning_subproc()需要正好4個參數(給出5)
但是,現在我得到另一個錯誤,當我在我的課程中使用此文件作爲函數時,我正在獲取下面提到的第二個錯誤。當我將dist [s,i]與0.0 if(dist [s,i] == 0.0)進行比較時:它需要整個數組。以前它只採用特定的dist [s,i]值。
我已經試過這個次數,並已經通過了一些這樣的錯誤給出的解釋。如果有人能幫助解決這個問題,我將不勝感激。
該程序計算'a'和'b'中點之間的距離以及點之間的歸屬(memb)。我知道可能有一個愚蠢的錯誤,但我在這方面工作很多,仍然是空白。
from numpy import *
import numpy as np
a=np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
b = np.array([[1,2,3], [3,2,1], [3,1,5]])
diff = a[newaxis,:,:] - b[:,newaxis,:]
dist=sqrt(np.sum((diff*diff),-1))
(n, d) = shape(a)
k = len(dist)
memb = np.zeros((k, n), dtype=float)
for i in range(n):
count = 0
for s in range(k):
if (dist[s,i] == 0.0):
count = count + 1
if (dist[s,i] != 0.0):
try:
nume = dist[s,i]
temp = 0.0
for j in range(k):
deno = dist[j,i]
temp += (nume/deno)**2
memb[s,i] = 1.0/temp
except:
deno=0.0
else:
for s in range(k):
if (dist[s,i] == 0.0):
memb[s,i] = 1.0/count
else:
memb[s,i] = 0.0
print memb
這是錯誤:
Traceback (most recent call last):
File "C:\python26\ask", line 186, in <module>
main()
File "C:\python26\ask", line 25, in main
memb = membMat(data, k, dist, m)
File "C:\python26\cmean new", line 121, in membMat
if (dist[s][i] == 0.0):
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Traceback (most recent call last):
File "C:/Users/ask/kk/pyth", line 25, in <module>
temp += ((nume/deno))
File "C:\python26\lib\warnings.py", line 29, in _show_warning
file.write(formatwarning(message, category, filename, lineno, line))
TypeError: idle_formatwarning_subproc() takes exactly 4 arguments (5 given)
爲什麼有括號的兩個層次中'溫度+ =((nume /傑諾))' – itsbruce
它是由錯誤,我糾正它。 – arunk