gpt4 book ai didi

python - 一维到二维数组 - python

转载 作者:太空狗 更新时间:2023-10-30 02:33:55 28 4
gpt4 key购买 nike

我想将存储在 1D 中的数据更改为 2D:我的意思是:

来自

x|y|a
1|1|a(1,1)
2|1|a(2,1)
3|1|a(3,1)
1|2|a(1,2)
...

进入:

x\y|1     |2     |3
1 |a(1,1)|a(1,2)|a(1,3
2 |a(2,1)|a(2,2)|a(2,3)...
3 |a(3,1)|a(3,2)|a(3,3)...
...

我通过 2 个循环完成了:

(rows - array of x,y,a)
for n in range(len(rows)):
for k in range(x_len):
for l in range(y_len):
if ((a[2, n] == x[0, k]) and (a[3, n] == y[0, l])):
c[k, l] = a[0, n]

但这需要很长时间,所以我的问题是是否有一个聪明而快速的Python 中的解决方案。

所以为了澄清我想做什么:

我知道 return() 函数,关键是它在数组 a 中是随机的。

所以:

a = np.empty([4, len(rows)]

我从具有4 列(1,2,x,y)'len(rows)' 的数据库中将数据读入数组a

我对“1”列感兴趣 - 我想将这一列放入新修改的数组中。

x = np.zeros([1, x_len], float)

y = np.zeros([1, y_len], float)

x 是数组 a 中已排序的 column(x) 的向量,但没有长度为 x_len< 的 duplicitas/strong>

(我是通过sql查询读取的:select distinct ...)

y 是数组 a 中排序的 column(y) 的向量(没有重复项),长度为 y_len

然后我正在制作数组:

c = np.zeros([x_len, y_len], float)

并通过 3 个循环(对之前的错误感到抱歉)数组 a 中的数据:>

 for n in range(len(rows)):
for k in range(x_len):
for l in range(y_len):
if ((a[2, n] == x[0, k]) and (a[3, n] == y[0, l])):
c[k, l] = a[0, n]

例子:

数组a

   array([[1, 3, 6, 5, 6], 
[1, 2, 5, 5, 6],
[1, 4, 7, 1, 2], ## x
[2, 5, 3, 3, 4]]) ## y

向量:xy

 [[1,2,4,7]]   ## x with x_len=4

[[2,3,4,5]] ## y with y_len=4

数组c

   array([[1, 5, 0, 0], 
[0, 0, 0, 0],
[0, 0, 0, 3],
[0, 6, 0, 0]])

最后一个数组 c 看起来像这样(第一个 a[0] 被写入):

 x\y 2|3|4|5
-----------
1 1|5|0|0
2 0|0|0|0
4 0|0|0|3
7 0|6|0|0

我希望我没有弄错它是如何写入数组c的。

非常感谢您的帮助。

最佳答案

你可以使用 numpy:

>>> import numpy as np
>>> a = np.arange(9)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> a.reshape(3,3)
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
#or:
>>> a.reshape(3,3).transpose()
array([[0, 3, 6],
[1, 4, 7],
[2, 5, 8]])

关于python - 一维到二维数组 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11090119/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com