首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当将浮点数减去int数组时有关自动数组的Numpy问题

当将浮点数减去int数组时有关自动数组的Numpy问题
EN

Stack Overflow用户
提问于 2015-09-24 01:58:40
回答 1查看 1K关注 0票数 0

嗨,我试图为Numpy 2D数组上的整个列减去一个数字,并将得到的值放入同一列,但是当减法数字是浮动的,数组列是整数时,Numpy似乎将减法的结果转换为int,然后更新它。为什么会发生这种事?

减除整数

代码语言:javascript
复制
In [1]: a = np.array([[1,2],[2,3],[3,4]])

In [2]: a[:,1] - 1
Out[2]: array([1, 2, 3])       # <-- OK!

In [3]: a[:,1] = a[:,1] - 1    # <-- auto-update the array column

In [4]: a
Out[4]:
array([[1, 1],
       [2, 2],
       [3, 3]])                # <-- OK!

减法浮点数

代码语言:javascript
复制
In [1]: a = np.array([[1,2],[2,3],[3,4]])

In [2]: a[:,1] - 0.5
Out[2]: array([ 1.5,  2.5,  3.5])   # <-- seems to be ok

In [3]: a[:,1] = a[:,1] - 0.5       # <-- auto-update the array column

In [4]: a
Out[4]:
array([[1, 1],
       [2, 2],
       [3, 3]])                     # <-- same result a[:,1] = a[:,1] - 1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-24 13:49:31

NumPy数组有一个固定的数据类型(dtype),如果您不自己指定它,则从初始化数据推断它。除非你告诉它,否则它不会改变,所以在你的第一个例子中:

代码语言:javascript
复制
a[:,1] - 0.5

您可以创建一个新数组,并根据需要从计算中推断出一个新的float dtype (原始a没有更改)。在第二个过程中,您实际上试图更改a中的值,这是一个整数数组,因此计算结果被转换为一个整数:例如,int(2-0.5)1

若要对数组执行浮点数运算,请使用astype显式地将其向上转换为astype

代码语言:javascript
复制
In [32]: a.astype('float') - 0.5
Out[32]: 
array([[ 0.5,  1.5],
       [ 1.5,  2.5],
       [ 2.5,  3.5]])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32752177

复制
相关文章

相似问题

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