【发布时间】:2018-01-30 12:17:31
【问题描述】:
我用 Python 写了这段代码 sn-p:
def remove_randomly(data, percentage):
test_list = []
np.random.shuffle(data)
for i in range(data.shape[0]):
for j in range(data.shape[1]):
roll = np.random.randint(low=1, high=100)
if roll > percentage:
test_list.append((i, j, data[i, j]))
data[i, j] = 0
它获取矩阵数据和一个数字百分比,遍历整个矩阵,并将元素归零(100 - 百分比)并将它们保存到另一个名为 test_list 的对象中。
有没有更好、更有效的方法来实现这个结果?我听说嵌套循环对您的健康有害。另外,我的数据矩阵恰好很大,所以使用 for 循环进行迭代非常慢。
示例
假设数据是矩阵[1, 2; 3, 4],百分比为 25%。
然后我希望输出是(例如)data = [1, 2; 0, 4] 和 test_list = [(1, 0, 3)]
【问题讨论】:
-
你能举个例子吗?
-
@VikasDamodar 对不起,我不认为我理解你?
-
通过运行此代码,您期望得到什么结果?
-
随机选择数据矩阵中的 (100 - percent)% 的条目并插入到列表中,然后在矩阵本身中变为零。