【问题标题】:How to print the last value of each subarray (Numpy)如何打印每个子数组的最后一个值(Numpy)
【发布时间】:2020-10-18 14:46:27
【问题描述】:

我已经设法在上述数组中创建了一个综合列表,但是,如果不创建新的 for 循环,我无法只打印出每个子数组的最后一个元素。 有人可以解释一下如何组合这两个循环吗?

import numpy as np

b = np.array([[[0.55867166, 0.06210792, 0.08147297],
        [0.82579068, 0.91512478, 0.06833034]],

       [[0.05440634, 0.65857693, 0.30296619],
        [0.06769833, 0.96031863, 0.51293743]],

       [[0.09143215, 0.71893382, 0.45850679],
        [0.58256464, 0.59005654, 0.56266457]],

       [[0.71600294, 0.87392666, 0.11434044],
        [0.8694668 , 0.65669313, 0.10708681]],

       [[0.07529684, 0.46470767, 0.47984544],
        [0.65368638, 0.14901286, 0.23760688]]])

list5 = [[[e for e in r if e <= 0.5] for r in s] for s in b]
print(list5)
for i in list5:
    print((i[-1]))

【问题讨论】:

  • 你是指list5中列表的最后一个元素吗?
  • 我的目标是从 b 获取每个子数组中的最后一个值

标签: arrays python-3.x numpy list-comprehension


【解决方案1】:

您应该显示此代码的结果!我们中的大多数人无法在精神上运行代码(或者懒得这样做)。

In [46]: b.shape
Out[46]: (5, 2, 3)
In [47]: list5 = [[[e for e in r if e <= 0.5] for r in s] for s in b]
In [48]: list5
Out[48]: 
[[[0.06210792, 0.08147297], [0.06833034]],
 [[0.05440634, 0.30296619], [0.06769833]],
 [[0.09143215, 0.45850679], []],
 [[0.11434044], [0.10708681]],
 [[0.07529684, 0.46470767, 0.47984544], [0.14901286, 0.23760688]]]
In [49]: for i in list5:
    ...:     print((i[-1]))
    ...: 
[0.06833034]
[0.06769833]
[]
[0.10708681]
[0.14901286, 0.23760688]

结果包含不同长度的列表 - 0,1,2。这表明不值得尝试消除循环。或者至少需要一些横向思维来解决这个问题。

我可以替换最里面的迭代

In [52]: list6 = [[r[r<=0.5] for r in s][-1] for s in b]
In [53]: list6
Out[53]: 
[array([0.06833034]),
 array([0.06769833]),
 array([], dtype=float64),
 array([0.10708681]),
 array([0.14901286, 0.23760688])]

因为你只想要中间维度的最后一个子列表:

In [54]: [r[r<=0.5] for r in b[:,-1,:]]
Out[54]: 
[array([0.06833034]),
 array([0.06769833]),
 array([], dtype=float64),
 array([0.10708681]),
 array([0.14901286, 0.23760688])]

【讨论】:

  • 这比我的解决方案更好r =[r[r&lt;=0.5] for r in np.array([[sub_sub[-1] for sub_sub in sub] for sub in b]).flatten()]
猜你喜欢
  • 2017-12-27
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多