Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 无法使用numpy展平阵列_Python_Arrays_Numpy - Fatal编程技术网

Python 无法使用numpy展平阵列

Python 无法使用numpy展平阵列,python,arrays,numpy,Python,Arrays,Numpy,我的输出如下: data = [array([1. , 1.14112001, 0.7205845 , 1.41211849, 0.46342708, 1.65028784, 0.24901275]), array([1.83665564, 0.09442164, 1.95637593, 0.01196838, 1.99991186, 0.00822115, 1.96379539]), array([0.08347845, 1.85090352,

我的输出如下:

data = [array([1.        , 1.14112001, 0.7205845 , 1.41211849, 0.46342708,
        1.65028784, 0.24901275]),
 array([1.83665564, 0.09442164, 1.95637593, 0.01196838, 1.99991186,
        0.00822115, 1.96379539]),
 array([0.08347845, 1.85090352, 0.23174534, 1.67022918, 0.44121095,
        1.43616476])]
这是一个包含3个数组的列表。我得把阵列展平。这应该很简单,如
数据。展平(“F”)
但它不起作用

输出应该包含每个数组的第一个元素,然后是第二个元素,依此类推

类似于:
1,1.83665564,1.14112001,0.09442164,1.85090352
等等。我该怎么做

更新:

我用给定代码得到的输出如下

array([array([1.        , 1.14112001, 0.7205845 , 1.41211849, 0.46342708,
       1.65028784, 0.24901275]),
       array([1.83665564, 0.09442164, 1.95637593, 0.01196838, 1.99991186,
       0.00822115, 1.96379539]),
       array([0.08347845, 1.85090352, 0.23174534, 1.67022918, 0.44121095,
       1.43616476])], dtype=object)
输出:

[1.0, 1.83665564, 0.08347845, 1.14112001, 0.09442164, 1.85090352, 0.7205845, 1.95637593, 0.23174534, 1.41211849, 0.01196838, 1.67022918, 0.46342708, 1.99991186, 0.44121095, 1.65028784, 0.00822115, 1.43616476, 0.24901275, 1.96379539]
输出:

[1.0, 1.83665564, 0.08347845, 1.14112001, 0.09442164, 1.85090352, 0.7205845, 1.95637593, 0.23174534, 1.41211849, 0.01196838, 1.67022918, 0.46342708, 1.99991186, 0.44121095, 1.65028784, 0.00822115, 1.43616476, 0.24901275, 1.96379539]

不知道是否是最好的解决方案,但您可以使用
np.resize
将所有数组重塑为相同长度并垂直堆叠。然后使用
.T
以列为基础将其展平,并使用掩码排除由
np创建的值。调整大小

l = max(x.size for x in data)
masks = [np.arange(l) < x.size for x in data]
np.vstack(np.resize(x, l) for x in data).T.flatten()[np.vstack(masks).T.flatten()]

>> array([1.        , 1.83665564, 0.08347845, 1.14112001, 0.09442164,
   1.85090352, 0.7205845 , 1.95637593, 0.23174534, 1.41211849,
   0.01196838, 1.67022918, 0.46342708, 1.99991186, 0.44121095,
   1.65028784, 0.00822115, 1.43616476, 0.24901275, 1.96379539])
l=max(数据中x的x.size)
掩码=[np.arange(l)>阵列([1,1.83665564,0.08347845,1.14112001,0.09442164,
1.85090352, 0.7205845 , 1.95637593, 0.23174534, 1.41211849,
0.01196838, 1.67022918, 0.46342708, 1.99991186, 0.44121095,
1.65028784, 0.00822115, 1.43616476, 0.24901275, 1.96379539])

不知道是否是最佳解决方案,但您可以使用
np.resize
将所有数组重塑为相同长度,并垂直堆叠。然后使用
.T
以列为基础将其展平,并使用掩码排除由
np创建的值。调整大小

l = max(x.size for x in data)
masks = [np.arange(l) < x.size for x in data]
np.vstack(np.resize(x, l) for x in data).T.flatten()[np.vstack(masks).T.flatten()]

>> array([1.        , 1.83665564, 0.08347845, 1.14112001, 0.09442164,
   1.85090352, 0.7205845 , 1.95637593, 0.23174534, 1.41211849,
   0.01196838, 1.67022918, 0.46342708, 1.99991186, 0.44121095,
   1.65028784, 0.00822115, 1.43616476, 0.24901275, 1.96379539])
l=max(数据中x的x.size)
掩码=[np.arange(l)>阵列([1,1.83665564,0.08347845,1.14112001,0.09442164,
1.85090352, 0.7205845 , 1.95637593, 0.23174534, 1.41211849,
0.01196838, 1.67022918, 0.46342708, 1.99991186, 0.44121095,
1.65028784, 0.00822115, 1.43616476, 0.24901275, 1.96379539])

使用itertools.zip_按顺序获取不同长度数组中的元素(请参阅),然后使用列表理解来展平生成的元组

在Python 2中,我们应该改用itertools.izip_

>>> from itertools import zip_longest
>>> from numpy import array

# three sample arrays make up a list from 1 to 11
>>> data = array([array([1,4,7,10]), array([2,5,8,11]), array([3,6,9])])
>>> temp = list(zip_longest(*data, fillvalue=None))
>>> temp
[(1, 2, 3), (4, 5, 6), (7, 8, 9), (10, 11, None)]

>>> [i for tup in temp for i in tup if i is not None]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

使用itertools.zip_longest按顺序获取不同长度数组中的元素(请参见),然后使用列表理解来展平生成的元组

在Python 2中,我们应该改用itertools.izip_

>>> from itertools import zip_longest
>>> from numpy import array

# three sample arrays make up a list from 1 to 11
>>> data = array([array([1,4,7,10]), array([2,5,8,11]), array([3,6,9])])
>>> temp = list(zip_longest(*data, fillvalue=None))
>>> temp
[(1, 2, 3), (4, 5, 6), (7, 8, 9), (10, 11, None)]

>>> [i for tup in temp for i in tup if i is not None]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

数组大小不一样我不清楚要以什么模式连接索引。请在您的示例中添加更多步骤,或者尝试将其正式概括。您说您尝试了
data.flatten(“F”)
。但是
data
是一个Python列表,而不是numpy数组。Python列表没有展平方法。
np.hstack(arr)
应该可以工作。您有一个数组,因此通常的
重塑
展平
方法不起作用
hstack
连接
将其视为数组的列表或序列。元素较少的数组会发生什么情况?数组大小不同我不清楚要以什么模式连接索引。请在您的示例中添加更多步骤,或者尝试将其正式概括。您说您尝试了
data.flatten(“F”)
。但是
data
是一个Python列表,而不是numpy数组。Python列表没有展平方法。
np.hstack(arr)
应该可以工作。您有一个数组,因此通常的
重塑
展平
方法不起作用
hstack
连接
将其视为数组的列表或序列。元素较少的数组会发生什么情况?