首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Numpy不能从dtype转换ufunc多输出。

Numpy不能从dtype转换ufunc多输出。
EN

Stack Overflow用户
提问于 2016-07-30 11:39:30
回答 3查看 33.5K关注 0票数 26

我想用自动四舍五入将int16数组与float数组相乘,但这失败了:

代码语言:javascript
运行
复制
import numpy

A = numpy.array([1, 2, 3, 4], dtype=numpy.int16)
B = numpy.array([0.5, 2.1, 3, 4], dtype=numpy.float64)

A *= B

我得到:

TypeError:不能通过转换规则“same_kind”将ufunc从dtype('float64')到dtype('int16')的输出相乘

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-30 14:12:42

2解决这个问题的方法:

您可以通过替换来解决这个

代码语言:javascript
运行
复制
A *= B

代码语言:javascript
运行
复制
A = (A * B)

代码语言:javascript
运行
复制
numpy.multiply(A, B, out=A, casting='unsafe')
票数 25
EN

Stack Overflow用户

发布于 2016-07-30 18:40:33

您可以使用broadcasting对这两个数组进行乘,并且只取整数部分如下:

代码语言:javascript
运行
复制
In [2]: (A*B).astype(int)
Out[2]: array([ 0,  4,  9, 16])

时间限制:

代码语言:javascript
运行
复制
In [8]: %timeit (A*B).astype(int)
1000000 loops, best of 3: 1.65 µs per loop

In [9]: %timeit np.multiply(A, B, out=A, casting='unsafe')
100000 loops, best of 3: 2.01 µs per loop
票数 4
EN

Stack Overflow用户

发布于 2016-07-30 19:18:09

代码语言:javascript
运行
复制
import numpy as np

A = np.float_(A)
A *= B

尝尝这个。我认为是不同的数组类型,你会失败。

投射

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38673531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档