解決法だけ見たい人
解決法
import numpy as np
a = np.arange(4).reshape((2, 2))
b = np.arange(5,9).reshape((2, 2))
print(a)
print(b)
c = np.zeros((2, 2), dtype = int)
np.dot(a, b, out = c)
print(c)
#出力結果
[[0 1]
[2 3]]
[[5 6]
[7 8]]
[[ 7 8]
[31 36]]
経緯
コード
import numpy as np
a = np.arange(4).reshape((2, 2))
b = np.arange(5,9).reshape((2, 2))
c = zeros((2, 2))
np.dot(a, b, out = c)
dotを使ったコードを実行したところ,このようなエラーが出たので,臨時的な解決法をメモします.
実行エラー
output array is not acceptable (must have the right type, nr dimensions, and be a C-Array)
出力先の二次元配列が正しくない型,もしくは行と列の数が間違っている,または,C-Array(numpy内の配列?)ではない.とのこと.
行と列の数はあってるし,numpy.array使っているので,後ろ二つは違う.となると,一番前の型が正しくないと考えた.
np.zeros()は,デフォルトではfloat型になっているようなので,int型に変換するだけでいいらしい.
実際にやってみると,解決した.
コード
import numpy as np
a = np.arange(4).reshape((2, 2))
b = np.arange(5,9).reshape((2, 2))
c = np.zeros((2, 2), dtype = int)
c = np.dot(a, b, out = c)
print(c)
#出力結果
[[ 7 8]
[31 36]]
これでもOK
import numpy as np
a = np.arange(4).reshape((2, 2))
b = np.arange(5,9).reshape((2, 2))
c = np.dot(a, b)
参考:
(https://github.com/numpy/numpy/issues/7124)
(https://docs.scipy.org/doc/numpy/reference/generated/numpy.zeros.html)