Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用一行代码获取python中的数组元素_Python_List_Numpy - Fatal编程技术网

用一行代码获取python中的数组元素

用一行代码获取python中的数组元素,python,list,numpy,Python,List,Numpy,我需要使用这个漂亮的np数组 import numpy as np train_predicteds = np.asarray([ [[0.1, 0.2, 0.3], [0.5, 0.6, 0.7], [0.7, 0.8, 0.9]], [[0.3, 0.1, 0.4], [0.4, 0.5, 0.6], [0.5, 0.6, 0.1]]]) 现在我想以这种方式获取元素: [[0.1, 0.3], [0.2, 0.1], [0.3, 0.4], [0.5, 0.4], [0.6, 0.

我需要使用这个漂亮的np数组

import numpy as np
train_predicteds = np.asarray([ 
 [[0.1, 0.2, 0.3], [0.5, 0.6, 0.7], [0.7, 0.8, 0.9]],
 [[0.3, 0.1, 0.4], [0.4, 0.5, 0.6], [0.5, 0.6, 0.1]]])
现在我想以这种方式获取元素:

[[0.1, 0.3], [0.2, 0.1], [0.3, 0.4],
 [0.5, 0.4], [0.6, 0.5], [0.7, 0.6],
 [0.7, 0.5], [0.8, 0.6], [0.9, 0.1]]
我找到的某种解决方案是使用以下两行代码:

aux = [item[0] for item in train_predicteds]
x = [item[0] for item in aux]
这使得我x等于

[0.10000000000000001, 0.30000000000000001]
但是我不能把这两行合并成一行,有可能吗?还是有更好的肾盂疗法


谢谢大家

更好的Pythonic解决方案

>>> train_predicteds[:,0,0]
array([0.1, 0.3])

您可以通过简单的循环理解来实现这一点:

import numpy as np
train_predicteds = np.asarray([ 
 [[0.1, 0.2, 0.3], [0.5, 0.6, 0.7], [0.7, 0.8, 0.9]],
 [[0.3, 0.1, 0.4], [0.4, 0.5, 0.6], [0.5, 0.6, 0.1]]])

result = [list(train_predicteds[:, i, j]) for i in range(3) for j in range(3)]
输出:

[[0.1, 0.3], [0.2, 0.1], [0.3, 0.4],
 [0.5, 0.4], [0.6, 0.5], [0.7, 0.6],
 [0.7, 0.5], [0.8, 0.6], [0.9, 0.1]]
更新:

谢谢你指出这一点

或者,如果您更喜欢更广义的形式:

result = [list(train_predicteds[:, i, j]) for i in range(len(train_predicteds[0])) for j in range(len(train_predicteds[0, 0]))]
首先是:

In [17]: arr = np.asarray([  
    ...:  [[0.1, 0.2, 0.3], [0.5, 0.6, 0.7], [0.7, 0.8, 0.9]], 
    ...:  [[0.3, 0.1, 0.4], [0.4, 0.5, 0.6], [0.5, 0.6, 0.1]]])                 
In [18]: arr                                                                    
Out[18]: 
array([[[0.1, 0.2, 0.3],
        [0.5, 0.6, 0.7],
        [0.7, 0.8, 0.9]],

       [[0.3, 0.1, 0.4],
        [0.4, 0.5, 0.6],
        [0.5, 0.6, 0.1]]])
In [19]: arr.shape                                                              
Out[19]: (2, 3, 3)
在尝试了几个转置命令后,我得到:

In [26]: arr.transpose(1,2,0)        # shape (3,3,2) moves 1st dim to end                                          
Out[26]: 
array([[[0.1, 0.3],
        [0.2, 0.1],
        [0.3, 0.4]],

       [[0.5, 0.4],
        [0.6, 0.5],
        [0.7, 0.6]],

       [[0.7, 0.5],
        [0.8, 0.6],
        [0.9, 0.1]]])
前两个尺寸可以通过“重塑”合并:

In [27]: arr.transpose(1,2,0).reshape(9,2)                                      
Out[27]: 
array([[0.1, 0.3],
       [0.2, 0.1],
       [0.3, 0.4],
       [0.5, 0.4],
       [0.6, 0.5],
       [0.7, 0.6],
       [0.7, 0.5],
       [0.8, 0.6],
       [0.9, 0.1]])

驱逐!太好了谢谢你,迈洛德!OP可能想要一些更一般的东西,比如
result=[list(train_predicteds[:,x,y])用于范围内的x(len(train_predicteds)+1)用于范围内的y(len(train_predicteds[0])]
,但这个输出是干净的!干得好。@Reedinationer你说得对。但根据我的经验,通常解决具体问题的直接答案是wanted@Reedinationer,您的解决方案与此输入有问题。据预测,列车将被预测为np.Nararararararararararararararararararararararararararararararararararararararay([…[[0.1,0.1,0.1,0.0.1,0.1,0.2,0.2,0.2,0.2,0.2,0.6,0.6,0.6,0.6,0.7,0.7,0.8,0.8,0.8,0.8,0.9]],,[np.3,0.3,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0,0.1,0,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.3,0.1,0.4],[0.4,0.5,0.6],[0.5,0.6,0.1]])@Reedinationer谢谢,我修复了你答案中的小问题,并将其添加到了我的问题中。我认为OP试图从他的第二个代码块中重新创建整个数组,但在如何将他的算法从计算一项扩展到完整项时,他被难住了。也许我误解了,我能用我的“一种解决方案”来重构元素,但我想要一些更时尚的东西。@加布里埃尔佩利格罗,你应该考虑接受HPAULJ解决方案,而不是比这里的其他2个答案更“数字”。