t=0
abig= zeros((10000,150))
aa=[0 for i in range(150)]
print abig[0]
while 1:
aa=abig[t]
for k in range(150):
for i in range(150):
ppp=aa[k]+nk[k]*(1-iris[k][3]*aa[i]*iris[i][3]*kk[i][k])
aa[k]=ppp
if aa[k]<0:
aa[k]=0
if aa[k]>10:
aa[k]=10
print abig[0]
abig[t+1]=aa
t=t+1
sds=subtract(abig[t-1],abig[t])
if norm(sds)<0.0001:
break
print t
print aa
我的期望是将每个abig[t]
分配给aa,然后用aa进行一些计算,然后将aa分配回abig[t+1]
,然后得到这两个的减法。你知道吗
但我的结果是:
"D:\Python27\python.exe" "C:\Users\zlxstc\Desktop\database mining\assignment 3\Untitled 3.py" [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0.02182929 0.01688619 0.01852881 0.02994012 0.02334267 0.02912904 0.01877934 0.02329373 0.01769912 0.01881822 0.02398082 0.02355713 0.02299379 0.02074258 0.02807412 0.02593361 0.02593361 0.02362391 0.02639219 0.01560549 0.02182929 0.01877934 0.0185701 0.02597403 0.03099814 0.02547771 0.02663825 0.03051572 0.01591343 0.01709986 0.02156567 0.02685285 0.0245459 0.02358491 0.02918856 0.02524615 0.02329373 0.02355713 0.02128565 0.02085941 0.02360718 0.02074258 0.0174703 0.01569859 0.02460025 0.0293772 0.01628399 0.02424242 0.02284148 0.02043736 0.02331002 0.02427184 0.03293808 0.01901864 0.02340824 0.01877934 0.01688619 0.01422677 0.02125399 0.02394063 0.02175332 0.0199005 0.02547771 0.02570694 0.02360718 0.0249004 0.02299908 0.02807412 0.02768549 0.02463054 0.01268231 0.01469508 0.02125399 0.02247191 0.02880184 0.02912904 0.03359086 0.02071251 0.0293772 0.02154708 0.01923077 0.03096934 0.01879699 0.01996008 0.01789229 0.03225806 0.02125399 0.01730703 0.02156567 0.0204165 0.0273224 0.03164557 0.01879699 0.02208481 0.02334267 0.01547988 0.03147624 0.0163292 0.02630887 0.01901864 0.01783167 0.02099958 0.01835199 0.01730703 0.01769912 0.0273224 0.02856327 0.01670844 0.03631082 0.0339098 0.02752546 0.02502503 0.01946661 0.02421894 0.02329373 0.0200441 0.01454334 0.02018978 0.01902226 0.02085941 0.02329373 0.02777778 0.01769912 0.02207993 0.02483855 0.02886003 0.02362391 0.02355713 0.01832845 0.01968504 0.02181025 0.01968504 0.0144655 0.01936483 0.02807412 0.02229654 0.02483855 0.02017756 0.01877934 0.02630887 0.01497006 0.01688619 0.02047083 0.01919754 0.0212766 0.02340824 0.02563445 0.01789229 0.01320481 0.02527167] ............... ...............
这两个abig[0]
是不一样的。所以减法就是0
。为什么?
上面有kk[]
和nk[]
和iris[]
的一些定义。它们相关吗?你知道吗
代码中有几个问题(除了变量名的选择)。首先,做:
不会复制
abig[t]
。相反,aa
和abig[t]
引用相同的数据,因此如果执行以下操作:然后自动
另一方面,作业的顺序可能是错误的。我想你想要的是:
由于
abig
似乎是numpy
数组,因此copy
方法被隐式使用,因此abig[t]
是aa
的副本(它们不共享数据)。你知道吗现在正在做:
不会改变
aa[1]
。你知道吗其次,这部分代码:
与以下内容相同:
所以循环是无用的。我想你真正的意思是
(但不完全确定)。你知道吗
总之,在您当前的实现中,
aa
、abig[t]
和abig[t+1]
都引用相同的数据,因此当您减去连续的行时,会得到一堆零。你知道吗相关问题 更多 >
编程相关推荐