【发布时间】:2018-07-21 04:24:20
【问题描述】:
如果我这样做:
a = np.ones((10,1))
b = np.ones((10,1))
c = np.memmap('zeros.mat', dtype=np.float64, mode='w+', shape=(10,10), order='C')
a.dot(b.T, out=c)
我得到:
ValueError: 输出数组不可接受(必须具有正确的类型, nr 个维度,并且是一个 C 数组)
我检查了错误消息中的所有条件,它们似乎适合:
>>> print(a.dtype == b.dtype == c.dtype)
>>> print(np.dot(a, b.T).shape == c.shape)
>>> print(c.flags['C_CONTIGUOUS'])
True
True
True
当我将 c 替换为:
c = np.zeros((10,10))
它有效。
我做错了什么?
【问题讨论】:
-
使用 c = np.asarray(c) 有助于解决问题。 (github.com/numpy/numpy/issues/7124)