首页 > 解决方案 > 如何生成一个numpy数组的随机数?

问题描述

有一个numpy array类似的以下 numpy 数组。我想integer为特定的 numpy 数组生成一个随机数string。我该怎么做?

# input
X = np.array([['a', 'p', 'b'],
              ['a', 'p', 'd'],
              ['c', 'p', 'd'],
              ['c', 'p', 'e'],
              ['c', 'p', 'f']])

# output
X = np.array([[100, 5, 101],
              [100, 5, 103],
              [102, 5, 103],
              [102, 5, 104],
              [102, 5, 105]])

标签: pythonlistnumpy

解决方案


由于您想为数组的每个唯一值分配一个随机整数值,您可以将唯一值映射到字典。

更新

我们需要创建检查随机数是否用作映射器的值。

from random import randint
import numpy as np


# input
X = np.array([['a', 'p', 'b'],
              ['a', 'p', 'd'],
              ['c', 'p', 'd'],
              ['c', 'p', 'e'],
              ['c', 'p', 'f']])

mapper = {}

output = []
for ar in X:
    temp = []
    for i in range(len(ar)):
        if ar[i] not in mapper:
            random_number = None
            while True:
                random_number = randint(1,120)
                if random_number not in mapper.values():
                    break
            mapper[ar[i]] = random_number
        temp.append(mapper[ar[i]])
    output.append(temp)
output = np.array(output)
print(output)

输出:

[[  7  86 120]
 [  7  86  14]
 [ 51  86  14]
 [ 51  86 113]
 [ 51  86  54]]

推荐阅读