【问题标题】:numpy - get random integers as floatsnumpy - 将随机整数作为浮点数
【发布时间】:2017-03-27 10:05:53
【问题描述】:

所以在定点迭代中,我改变了矩阵的初始化方式

def init(M,N):
    return 2.5*np.ones([M,N])

def init(M,N):
    return nprnd.randint(1,6,[M,N])

在哪里

import numpy as np
import numpy.random as nprnd

这立即引起了

A -= step_size * G

TypeError:无法使用转换规则“same_kind”将 ufunc 减去输出从 dtype('float64') 转换为 dtype('int32')

很重要,我会的

nprnd.randint(1,6,[M,N], dtype='float')

除了

TypeError: randint 的数据类型“float64”不受支持

我该如何规避这个问题?我有点不想生成一个矩阵然后复制它只是为了将它转换为浮动。有没有更智能的方法?

【问题讨论】:

  • 如果您想要这些范围之间的随机浮点值,您还可以使用np.random.random_sample 创建矩阵5 * np.random.random_sample((M,N)) + 1
  • @umutto 谢谢,但我想要整数,我只是需要它们作为浮点数。
  • @User1291 你能显示更多代码吗?特别是G是什么,A是什么,step_size是什么。

标签: python numpy casting


【解决方案1】:

您可以使用astype 进行显式转换:

nprnd.randint(1,6,[M,N]).astype("float")

【讨论】:

  • 是的,但这会复制数组。有没有办法避免呢?
猜你喜欢
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-26
  • 2010-12-14
  • 2012-08-06
  • 2020-05-14
  • 2023-04-05
  • 2019-05-10
相关资源
最近更新 更多