迭代数组的每个元素

时间:2020-07-17 13:26:04

标签: python numpy numpy-ndarray numpy-slicing

我有两个数组(3x3),我想以这两个数组访问元素

x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
y = [[11, 12, 13], [14, 15, 16], [17, 18, 19]]
z = stack((x, y))

现在我想要让我得到的子数组

z1 = [1, 11]
z2 = [2, 12]
z3 = [3, 13]
z4 = [4, 14]
...

我尝试了z[:, 0],但没有按照我的意愿给[1, 11]。我可以编写一个for循环并在z[:, i][:, j]上进行迭代,但是我的实际数组大小是6k x 6k,所以它会很慢。有什么办法可以解决?谢谢。

2 个答案:

答案 0 :(得分:0)

z[:, 0, 0]
>>> array([ 1, 11])

您错过了最后一个索引,因为您的堆栈现在是3维的。

现在,如果要分别访问每个元素,则需要为z[:, i, j]循环3次。


如果您通常只想拥有一个二维的数组,则必须先将其展平:

x_ = np.array(x).reshape(-1, 1)
y_ = np.array(y).reshape(-1, 1)

z = np.hstack((x_, y_))

z[0]
>>> array([ 1, 11])

答案 1 :(得分:0)

尝试一下:

x=[[1,2,3],[4,5,6],[7,8,9]]
y=[[11, 12, 13], [14, 15, 16], [17, 18, 19]]

for i in zip(x,y):
    for j in zip(i[0], i[1]):
        print(list(j))

输出:

[1, 11]
[2, 12]
[3, 13]
[4, 14]
[5, 15]
[6, 16]
[7, 17]
[8, 18]
[9, 19]