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,它將生成隨機數
添加回答
舉報