Держите оператор numpy array в np.float32 - PullRequest
3 голосов
/ 04 мая 2011
a = np.random.random((512,512,3)).astype(np.float32)
b = np.ones((512,512,1), dtype=np.int32)
c = a / b
c.dtype

>> dtype('float64')

Разделение матрицы float32 на матрицу int32 дает матрицу float64.В настоящее время я должен сделать

return c.astype(np.float32)

Это дополнительная работа для процессора.Есть ли способ для меня, чтобы избежать окончательного преобразования и сказать numpy, чтобы сделать работу в float32?

1 Ответ

3 голосов
/ 04 мая 2011

Вам нужно будет использовать out аргумент np.divide().

[~/scratch]
|1> a = np.random.random((512,512,3)).astype(np.float32)

[~/scratch]
|2> b = np.ones((512,512,1), dtype=np.int32)

[~/scratch]
|3> c = np.empty_like(a)

[~/scratch]
|4> c = np.divide(a, b, c)

[~/scratch]
|5> c.dtype
dtype('float32')

В numpy 1.6 вы сможете сделать c = np.divide(a, b, dtype=np.float32)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...