>>>d1.shape
>>>(18,18)
>>>d2.shape
>>>(18,18)
>>>d3 = array([d1, d2])
>>>d3.shape
>>>(2, 18, 18)
如果我已经获得了具有形状的d3(2,18,18)并且我想将另一个2-d阵列d4(18x18)添加到d3中以制作3-d阵列(3,18,18)。登记/> 我该怎么办?
==== 2015-12-31 =====
从下面的答案中,我在这里收集了一些有用的代码
d3 = np.concatenate([d3, d4.reshape(1, d3.shape[0],d4.shape[1])])
- 醇>
d3 = np.vstack([d3, d4[None, ...]])
通过读取681 .csv文件测试构建3-d数组(681x50x60)后, 第二种方法比同一台笔记本电脑上的第一种方法(28秒)效率更高(19秒)。
答案 0 :(得分:5)
与d3
相同,只需将d4
重塑为三维数组:
d3 = array([d3, d4.reshape(1, 18, 18)])
或
d3 = concatenate([d3, d4.reshape(1, 18, 18)])
答案 1 :(得分:1)
以下可能有用,但我想有一种更有效的方法来实现相同的结果......
import numpy as np
d1 = np.array([[1, 2, 3], [4, 5, 6]])
d2 = np.array([[7, 8, 9], [1, 2, 3]])
d3 = np.array([d1, d2])
dnew = np.array([[6, 5, 4], [3, 2, 1]])
d3 = np.array([dnew] + [d3[a, ...] for a in range(d3.shape[0])])
# Add to the end of the array
dlast = np.array([[6, 5, 4], [3, 2, 1]])
d3 = np.array([d3[a, ...] for a in range(d3.shape[0])] + [dlast])
编辑:有更好的方法
在this question中,stack命令用于将数组字面堆叠在一起。举个例子来考虑:
import numpy as np
d1 = np.array([[1, 2, 3], [4, 5, 6]])
d2 = np.array([[7, 8, 9], [1, 2, 3]])
d3 = np.array([d1, d2])
dnew = np.array([[6, 5, 4], [3, 2, 1]])
d3 = np.vstack([d3, dnew[None, ...]])
使用np.vstack
和使用np.array
创建新数组之间存在重要差异。后者(在numpy版本1.8.2上测试)生成两个对象的数组,而堆栈生成一个numpy数组。