numpy 在Python中打印数组的特定行

im9ewurl  于 2023-01-02  发布在  Python
关注(0)|答案(3)|浏览(209)

我正在尝试基于列表J的数组A的特定行。例如,它应该打印AJ=[[1,4]]以来的第1行和第4行,并按照预期输出所示进行追加。我还提供了当前输出。

import numpy as np

A=np.array([[1,2,3,4,5],
            [6,7,8,9,10],
            [11,12,13,14,15],
            [16,17,18,19,20],
            [21,22,23,24,25]])

J=[[1, 4]]

for i in J[0]:
     A=A[i]
     print([A])

当前输出为

[array([ 6,  7,  8,  9, 10])]
[array(10)]

预期的输出为

[array([[ 6,  7,  8,  9, 10],
        [21,22,23,24,25]])]
olqngx59

olqngx591#

可以在一行中完成:

np.array([list(A[i]) for i in J[0]])

#output
array([[ 6,  7,  8,  9, 10],
       [21, 22, 23, 24, 25]])

如果要追加到列表,则:

l=[]
l.append(np.array([list(A[i]) for i in J[0]]))

#output
[array([[ 6,  7,  8,  9, 10],
       [21, 22, 23, 24, 25]])]
aurhwmvo

aurhwmvo2#

问题是你在用A=A[i]重写循环中的A数组,所以当代码第二次试图找到A [i]时,它将过滤新的A,这是前一个循环中的行(因此输出为10)。

for i in J[0]:
    B = A[i]
    print([B])

输出:

[array([ 6,  7,  8,  9, 10])]
[array([21, 22, 23, 24, 25])]

要获得包含嵌套列表的数组的列表的精确输出,可以创建一个空列表C,并在每个循环中添加列表B,然后在最后将其转换为列表中的数组,而不是打印每个步骤,如下所示:

C = []
for i in J[0]:
    B=A[i]
    C += [list(B)]
C = [np.array(C)]

现在C是:

[array([[ 6,  7,  8,  9, 10],
       [21, 22, 23, 24, 25]])]
t9aqgxwy

t9aqgxwy3#

定义一个空的数组变量,并在循环中添加所需的原始数组,完成后打印出该数组。

B = []
for i in J[0]:
    B.append(A[i])
print([B])

O/P将为:

[[array([ 6,  7,  8,  9, 10]), array([21, 22, 23, 24, 25])]]

更新您可以使用filter numpy by indices

J = [[1, 4]]
B = A[J[0]]
print([B])

O/P将为:

[array([[ 6,  7,  8,  9, 10],
       [21, 22, 23, 24, 25]])]

相关问题