3 回答
TA贡献1836条经验 获得超4个赞
构造数组的方式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)
TA贡献1785条经验 获得超8个赞
问题是它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...
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,它将生成随机数
添加回答
举报