Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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_Arrays_Numpy_Matrix - Fatal编程技术网

Python 将三维阵列沿各自的列分离为二维阵列

Python 将三维阵列沿各自的列分离为二维阵列,python,arrays,numpy,matrix,Python,Arrays,Numpy,Matrix,代码是用Python编写的。在上面的代码中,我试图将numpy 3-d数组(tempObj)分成两个2-d数组(temp1和temp2),以便合并相应的列。 有更好或更简单的方法吗?使用tempObj[:,0,:]和tempObj[:,1,:]。以下是一个例子: temp1 = tempObj[0][0] temp2 = tempObj[0][1] if len(tempObj) > 1: for i in range(1, len(tempObj)): temp1 = n

代码是用Python编写的。在上面的代码中,我试图将numpy 3-d数组(tempObj)分成两个2-d数组(temp1和temp2),以便合并相应的列。
有更好或更简单的方法吗?

使用
tempObj[:,0,:]
tempObj[:,1,:]
。以下是一个例子:

temp1 = tempObj[0][0]
temp2 = tempObj[0][1]
if len(tempObj) > 1:
    for i in range(1, len(tempObj)):
    temp1 = np.vstack((temp1, tempObj[i][0]))
    temp2 = np.vstack((temp2, tempObj[i][1]))
您需要确保
tempObj
(或其任何部分)的类型是
numpy.ndarray
,而不是
list
。您可以通过键入
print(type(tempObj))
来完成此操作。下面的示例是我怀疑的代码,它给出了一个
TypeError错误:列表索引必须是整数,而不是tuple

import numpy as np
tempObj = np.array([
    [
        [1,5], [2,7], [3,8], [4,4],
        [6, 5], [4, 7], [13, 8], [9, 4]
    ],

    [
        [21,25], [22,72], [32,82], [34,43],
        [64, 54], [44, 74], [1443, 48], [94, 44]
    ],
    [
        [211, 215], [212, 712], [312, 812], [314, 413],
        [614, 514], [414, 714], [11443, 148], [194, 414]
    ]

])

# Your code:
############################################
temp1 = tempObj[0][0]
temp2 = tempObj[0][1]
if len(tempObj) > 1:
    for i in range(1, len(tempObj)):
        temp1 = np.vstack((temp1, tempObj[i][0]))
        temp2 = np.vstack((temp2, tempObj[i][1]))
print(temp1)
print(temp2)

# my suggestion
############################################
print(tempObj[:, 0, :])
print(tempObj[:, 1, :])

使用
tempObj[:,0,:]
tempObj[:,1,:]
。以下是一个例子:

temp1 = tempObj[0][0]
temp2 = tempObj[0][1]
if len(tempObj) > 1:
    for i in range(1, len(tempObj)):
    temp1 = np.vstack((temp1, tempObj[i][0]))
    temp2 = np.vstack((temp2, tempObj[i][1]))
您需要确保
tempObj
(或其任何部分)的类型是
numpy.ndarray
,而不是
list
。您可以通过键入
print(type(tempObj))
来完成此操作。下面的示例是我怀疑的代码,它给出了一个
TypeError错误:列表索引必须是整数,而不是tuple

import numpy as np
tempObj = np.array([
    [
        [1,5], [2,7], [3,8], [4,4],
        [6, 5], [4, 7], [13, 8], [9, 4]
    ],

    [
        [21,25], [22,72], [32,82], [34,43],
        [64, 54], [44, 74], [1443, 48], [94, 44]
    ],
    [
        [211, 215], [212, 712], [312, 812], [314, 413],
        [614, 514], [414, 714], [11443, 148], [194, 414]
    ]

])

# Your code:
############################################
temp1 = tempObj[0][0]
temp2 = tempObj[0][1]
if len(tempObj) > 1:
    for i in range(1, len(tempObj)):
        temp1 = np.vstack((temp1, tempObj[i][0]))
        temp2 = np.vstack((temp2, tempObj[i][1]))
print(temp1)
print(temp2)

# my suggestion
############################################
print(tempObj[:, 0, :])
print(tempObj[:, 1, :])

tempObj[:,0]
tempObj[:,1]
?@Divakar:它不适用于三维数组。
tempObj[:,0]
tempObj[:,1]
?@Divakar:它不适用于三维数组。出现以下错误:
TypeError:列表索引必须是整数,非元组
,因此您可以通过键入
tempObj=np.array(tempObj)
将其更改为
numpy.ndarray
,然后使用
tempObj[:,0,:]
等。出现以下错误:
tempObj=np.array(tempObj)
值错误:无法将输入数组从形状(4)广播到形状(1)我甚至尝试过这个方法,但是同样的错误出现了:
temp1=np.array(tempObj)[:,0,:]
值错误:无法将输入数组从形状(4)广播到形状(1)
tempObj=[[array([[0.10637,-0.1495,-0.0374,-0.2185],[0.1551,-0.0893,0.036,0.0282],[0.2061,0.5072,0.3971,0.3163],[-0.1448,0.2442,0.0603,0.0389],[1.0165,1.0355,0.0088,0.0101],[0.98874854,0.97787452,0.99859974,0.95337157],[0.97623035,0.99196171,0.99863394,0.99919989],[0.95837367,0.77314455,0.85411506,0.90477692],[0.97922599,0.9420922,99846],[0.998],[0.35578364,0.34216564,0.99992133,0.99989703]]]
好的,现在我明白了。使用
tempObj=np.array(tempObj[0])
然后
tempObj[0,:,:]
tempObj[1,:,:]
出现以下错误:
TypeError:列表索引必须是整数,而不是元组
因此您可以通过键入
tempObj=np.array(tempObj)
然后使用
tempObj[:,0,:]
等将其更改为
numpy.ndarray
,方法是:
tempObj=np.array(tempObj)
ValueError:无法将输入数组从形状(4)广播到形状(1)
我甚至尝试过这个,但同样的错误出现了:
temp1=np.array(tempObj)[:,0,:]
ValueError:无法将输入数组从形状(4)广播到形状(1)
tempObj=[[array([[0.10637,-0.1495,-0.0374,-0.2185],[0.1551,-0.0893,0.036,0.0282],[0.2061,0.5072,0.3971,0.3163],-0.1448,0.2442,0.0603,0.0389],-1.0165,1.0355,0.0088,0.0101]),阵列([0.98874854,0.97787452,0.99859974,0.95337157],[0.97623035,0.99196171,0.99863394,0.99989],],[0.95837367,0.77314455,0.85411506,0.90477692],[0.97922599,0.9420922,0.99636324,0.99848106],[0.35578364,0.34216564,0.99992133,0.99989703])]。
好的,现在我明白了。使用
tempObj=np.array(tempObj[0
然后
tempObj[0,:,:,:],