猿问

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

我正在这样做,如下所示。最初我有一个二维数组 A = [(1,2,3) , (4,5,6)]。现在通过函数 func ,我想用随机数替换数组 A 的两行中的所有元素。我正在尝试,但在执行函数后我得到的每个元素都为 0。有人可以帮忙吗。请记住,我必须通过使用此函数 func 并执行这些切片操作来解决此问题。


import numpy as np

import random

A=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)    

Output

Everytime 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]]


海绵宝宝撒
浏览 123回答 3
3回答

HUH函数

构造数组的方式A使其始终具有整数dtype。您可以使用 进行检查print(A.dtype)。这意味着 0-1 之间的值将被强制转换为 0,这是一个问题,因为np.random.rand仅返回 0 到 1 之间的值。您可以通过几种方式解决此问题:使用浮动体构建 A=np.array([(1.,2.,3.),(4.,5.,6.)])显式设置 dtype A=np.array([(1,2,3),(4,5,6)], dtype=np.float)转换为浮点类型 A=np.array([(1,2,3),(4,5,6)]).astype(np.float)

慕的地10843

问题是它A是一个整数数组,并且np.random.random出于实际目的生成小于一的浮点数。将这样的数字转换为整数总是会产生零。您可以通过以下两种方式之一进行修复:创建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...生成随机整数而不是浮点数,或者至少生成会转换为非零整数的浮点数:A。B[:]= np.random.randint(256, size=B.shape)b. B[:]= np.random.random(B.shape) * 256 C。ETC...

人到中年有点甜

您的代码经过少量修改import numpy as npfrom random import randomA=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,它将生成随机数
随时随地看视频慕课网APP

相关分类

Python
我要回答