Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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

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,我尝试使用numpy-hstack水平堆叠阵列,但无法使其工作。取而代之的是,它全部出现在一个列表中,而不是一个“矩阵式”2D数组 import numpy as np y = np.array([0,2,-6,4,1]) y_bool = y > 0 y_bool = [1 if l == True else 0 for l in y_bool] #convert to decimals for classification y_range = range(0,len(y)) print

我尝试使用numpy-hstack水平堆叠阵列,但无法使其工作。取而代之的是,它全部出现在一个列表中,而不是一个“矩阵式”2D数组

import numpy as np
y = np.array([0,2,-6,4,1])
y_bool = y > 0
y_bool = [1 if l == True else 0 for l in y_bool] #convert to decimals for classification
y_range = range(0,len(y))
print y
print y_bool
print y_range
print np.hstack((y,y_bool,y_range))
打印此文件:

[ 0  2 -6  4  1]
[0, 1, 0, 1, 1]
[0, 1, 2, 3, 4]
[ 0  2 -6  4  1  0  1  0  1  1  0  1  2  3  4]
如何使最后一行看起来像这样:

[0 0 0
 2 1 1
-6 0 2
 4 1 3]

如果要创建二维阵列,请执行以下操作:

print np.transpose(np.array((y, y_bool, y_range)))
# [[ 0  0  0]
#  [ 2  1  1]
#  [-6  0  2]
#  [ 4  1  3]
#  [ 1  1  4]]

好的,足够近的h是水平/柱方向的,如果你检查它的帮助,你会在下面看到

编辑:首先想到的是
vstack
会这样做,但是如果
np.vstack(…).T
np.dstack(…).squeak()
。除此之外,“问题”在于阵列是1D的,您希望它们的行为类似于2D,因此您可以:

print np.hstack([np.asarray(a)[:,np.newaxis] for a in (y,y_bool,y_range)])

np.asarray
存在,以防其中一个变量是一个列表。
np.newaxis
将其设置为2D,以便更清楚地显示连接时发生的情况。

旁白:您只需使用
y_bool=(y>0)*1即可。对于OP示例,
np.dstack(…).squeak()
print np.hstack([np.asarray(a)[:,np.newaxis] for a in (y,y_bool,y_range)])