为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中使用随机函数时每次都得到零

在Python中使用随机函数时每次都得到零

海绵宝宝撒 2023-12-20 14:07:28
我正在这样做,如下所示。最初我有一个二维数组 A = [(1,2,3) , (4,5,6)]。现在通过函数 func ,我想用随机数替换数组 A 的两行中的所有元素。我正在尝试,但在执行函数后我得到的每个元素都为 0。有人可以帮忙吗。请记住,我必须通过使用此函数 func 并执行这些切片操作来解决此问题。import numpy as npimport randomA=np.array([(1,2,3),(4,5,6)])def func(B):    B[0:3]= np.random.random((1,3))    return(B)                    for ic in range(0,2):    A[ic,:]= func(A[ic,:])print(A)    OutputEverytime I am getting zeros. There should be random numbers in both the rows of array A . I think the random number generator is generating zeros every time. Can somebody help ??[[0 0 0] [0 0 0]]
查看完整描述

3 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

构造数组的方式A使其始终具有整数dtype。您可以使用 进行检查print(A.dtype)。这意味着 0-1 之间的值将被强制转换为 0,这是一个问题,因为np.random.rand仅返回 0 到 1 之间的值。您可以通过几种方式解决此问题:

  1. 使用浮动体构建 A=np.array([(1.,2.,3.),(4.,5.,6.)])

  2. 显式设置 dtype A=np.array([(1,2,3),(4,5,6)], dtype=np.float)

  3. 转换为浮点类型 A=np.array([(1,2,3),(4,5,6)]).astype(np.float)


查看完整回答
反对 回复 2023-12-20
?
慕的地10843

TA贡献1785条经验 获得超8个赞

问题是它A是一个整数数组,并且np.random.random出于实际目的生成小于一的浮点数。将这样的数字转换为整数总是会产生零。

您可以通过以下两种方式之一进行修复:

  1. 创建A一个 dtype 数组float

    A。A = np.array([[1.0, 2, 3], [4, 5, 6]])
    b. A = np.array([[1, 2, 3], [4, 5, 6]], dtype=float)
    C。ETC...

  2. 生成随机整数而不是浮点数,或者至少生成会转换为非零整数的浮点数:

    A。B[:]= np.random.randint(256, size=B.shape)
    b. B[:]= np.random.random(B.shape) * 256 C。ETC...


查看完整回答
反对 回复 2023-12-20
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

您的代码经过少量修改


import numpy as np

from random import random

A=np.array([(1,2,3),(4,5,6)])

def func(B):

    B[0:3]= np.random.choice((1,3))

    return(B)

                

for ic in range(0,2):

A[ic,:]= func(A[ic,:])


print(A)  

您可以使用 np.random.choice 代替 np.random.random,它将生成随机数


查看完整回答
反对 回复 2023-12-20
  • 3 回答
  • 0 关注
  • 58 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信