【问题标题】:How do I create a randomly generated matrix with randomly generated dimension and then transpose it?如何创建具有随机生成维度的随机生成矩阵然后转置它?
【发布时间】:2021-03-24 09:38:45
【问题描述】:

这是我目前所拥有的:

import random
import numpy as np
r1 = random.randint(0, 100)
r2 = random.randint(0, 100)
r3 = random.randint(0, 100)
if r2 < r1:
    print("invalid")
elif r2 < r3:
    print("invalid")
a = np.arange(r2).reshape((r1, r3))
print(a)
print(a.transpose())

基本上,我创建了 3 个随机数在 1 到 100 之间的变量,我认为我误用了 if/else 语句,并且还弄乱了程序的 np.arange().reshape() 部分。 任何帮助将不胜感激。

【问题讨论】:

  • 这里的问题是,大多数时候您无法将输入数组np.arange(r2) 重塑为任意二维形状(r1, r3)。你会注意到这一点,如果你运行你的代码,你会得到cannot reshape array of size ... into shape (..., ...)
  • 错误或错误结果是什么?为什么要转置?
  • 基本上它说我不能将一定大小的数组重新整形为形状。即使数组大于形状。现在我做到了:import random import numpy as np r1 = random.randint(0, 100) r2 = random.randint(0, 100) a = np.arange(101).reshape((r1, r2)) print(a) print(a.transpose()) 但它仍然不起作用。
  • reshape 无法更改元素总数。

标签: numpy matrix random transpose


【解决方案1】:

您试图将形状 r2 的数组重塑为形状 r1, r3 的数组,这在大多数情况下是不可能的。这就像试图将r2 元素排列到r1 x r3 网格中。您的问题受到过度约束。为此,r2 需要等于 r1*r3

我不确定你的最终目标是什么,但你可以随机获取r1r3,然后将r2 设置为r1*r3。这基本上会将r1*r3 排列重塑为(r1, r3)

r1 = random.randint(0, 100)
r3 = random.randint(0, 100)
a = np.arange(r1*r3).reshape(r1, r3)

print(a)
print(a.transpose())

【讨论】:

  • 感谢您的帮助!
猜你喜欢
  • 2016-06-30
  • 2018-10-26
  • 2012-11-21
  • 2018-08-11
  • 1970-01-01
  • 2019-10-14
  • 2015-01-12
  • 2017-03-26
  • 1970-01-01
相关资源
最近更新 更多