从不同数组的多个元素创建数组

时间:2018-01-06 02:47:33

标签: python arrays excel

我想从每个数组中用不同的数字创建一个新数组。这是一个例子:

import numpy as np


a=[[0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10],[0,1,2,3,4,5,6,7,8,9,10]]
b=[[0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10],[0,1,2,3,4,5,6,7,8,9,10]]
c=[[0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10],[0,1,2,3,4,5,6,7,8,9,10]]
d=[]

for c in range (0,2):
    d.append([])
    for s in range (0,10):
        d[c] =np.concatenate((a[c][s],b[c][s],c[c][s]))

print(d)

当我打印'd'时,它给了我一个TypeError:'int'对象不是可订阅的。

这是由于连接功能吗?或者我可以使用堆栈吗?

我希望结果如下:

d[0][0]= [0,0,0] 

从每个阵列获得第一个术语。 d [0] [0]索引到文件和行。这就是我想要这种格式的原因。

1 个答案:

答案 0 :(得分:0)

Numpy是一个非常强大的库,因此我建议您在使用for循环之前始终先使用它来操作数组。你应该查看numpy axesshapes的含义。

您想要的数组d似乎是3D,但数组abc2D。因此,我们将首先扩展三个数组的维数。然后我们可以轻松地在这个新维度上连接它们。

以下代码可实现您的目标:

import numpy as np

# First convert the lists themselves to numpy arrays.
a = np.array([[0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10],
              [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]])  # Shape: (2, 11)
b = np.array([[0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10],
              [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]])  # Shape: (2, 11)
c = np.array([[0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10],
              [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]])  # Shape: (2, 11)

# Print the shape of the arrays
print(a.shape, b.shape, c.shape)

# Add an additional dimension to the three arrays along a new axis.
# axis 0 and axis 1 already exist. So we create it along axis 2.
a_ = np.expand_dims(a, axis=2)  # Shape: (2, 11, 1)
b_ = np.expand_dims(b, axis=2)  # Shape: (2, 11, 1)
c_ = np.expand_dims(c, axis=2)  # Shape: (2, 11, 1)

# Print the shape of the arrays
print(a_.shape, b_.shape, c_.shape)

# Concatenate all three arrays along the last axis i.e. axis 2.
d = np.concatenate((a_, b_, c_), axis=2)  # Shape: (2, 11, 3)

# Print d[0][0] to check if it is [0, 0, 0]
print(d[0][0])

您应该打印单个数组aa_d,以检查正在进行的转换类型。