我读了书#34;介绍数据科学。大数据,机器学习等,使用Python工具" 第4章中有关于阻塞矩阵计算的代码:
and
(
ans.f_Name in ('Agree','Disagree') or res.f_Answer in ('Agree','Disagree')
)
我得到ValueError:
import dask.array as da
import bcolz as bc
import numpy as np
import dask
n = 1e4 #A
ar = bc.carray(np.arange(n).reshape(n/2,2) , dtype='float64', rootdir = 'ar.bcolz', mode = 'w') #B
y = bc.carray(np.arange(n/2), dtype='float64', rootdir = 'yy.bcolz', mode = 'w') #B,
dax = da.from_array(ar, chunks=(5,5)) #C
dy = da.from_array(y,chunks=(5,5)) #C
XTX = dax.T.dot(dax) #D
Xy = dax.T.dot(dy) #E
coefficients = np.linalg.inv(XTX.compute()).dot(Xy.compute()) #F
coef = da.from_array(coefficients,chunks=(5,5)) #G
ar.flush() #H
y.flush() #H
predictions = dax.dot(coef).compute() #I
print (predictions)
问题是什么?
答案 0 :(得分:3)
问题出在这里:
np.arange(n/2).reshape(n)
您创建了一个大小为n/2
的数组,然后尝试将reshape
大小调整为n
。您无法使用reshape
更改尺寸。
这可能是一个复制/粘贴错误?它不在您的原始代码中,而您似乎正在执行
np.arange(n).reshape(n/2,2)
其他地方,只要n
是偶数,就会有效(小心,如果n
不是,即使这也会失败。)