【发布时间】:2022-01-19 16:44:41
【问题描述】:
输入数组为 x,尺寸为 (1 x 3),输出数组为 3 x 3(输入列 x 输入列)。输出数组的对角线是值^2。如果 row != column,则公式为每个值的 x(row)+x(col)。目前为 1 x 3,但应假定各种尺寸作为输入。不能使用'def'。当前代码不起作用,您会推荐什么?
x = np.array([[0, 5, 10]])
output array formulas =
[[i^2, x(row)+x(col), x(row)+x(col)]
[x(row)+x(col), i^2, x(row)+x(col)]
[x(row)+x(col), x(row)+x(col), i^2]]
# where row and column refer to the output matrix row, column. For example, the value in (1,2) is x(1)+x(2)= 5
ideal output =
[[0 5 10]
[5 25 15]
[10 15 100]]
尝试的代码:
x = np.array([[0, 5, 10]])
r, c = np.shape(x)
results = np.zeros((c, c))
g[range(c), range(c)] = x**2
for i in x:
for j in i:
results[i,j] = x[i]+x[j]
【问题讨论】:
-
为什么不像:
[n[i][j]**2 if i == j else n[i][j] for j in i for i in n]。 (显然你必须得到 i 和 j 的实际索引,所以这段代码只是一个算法示例。但你可以使用enumerate()) -
@EliHarold,我试过了,但出现错误:ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()。你能用给定的 x 数组展示一个例子吗?
-
看我的回答,我写了我提到的内容。