用法和列表一样,不用在意参数里是不是有空列表(用列表代替一个参数),其他几个好像都不可这样
a = [] b = np.arange(5) print(a) print(b) d = np.append(a,b) print(d) ---------输出---- [] [0 1 2 3 4] [0. 1. 2. 3. 4.]2. c_
np.c_是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等
#例一 a = np.arange(5) b = np.arange(5) print(a) print(b) d = np.c_[a,b] print(d) ------输出------------- [0 1 2 3 4] [0 1 2 3 4] [[0 0] [1 1] [2 2] [3 3] [4 4]] #例二 a = np.array([[1, 2, 3], [7, 8, 9]]) b = np.array([[4, 5, 6], [1, 2, 3]]) print(a) print(b) # d = np.column_stack((a,b)) d = np.c_[a,b] print(d) -------输出-------- [[1 2 3] [7 8 9]] [[4 5 6] [1 2 3]] [[1 2 3 4 5 6] [7 8 9 1 2 3]]3. hstack
a = np.arange(5) b = np.arange(5) d = np.hstack((a, b)) print(a) print(b) print(d) -----输出------ [0 1 2] [0 1 2 3 4 5 6] [0 1 2 0 1 2 3 4 5 6]
特殊情况,迭代,需要再循环外执行一次d = np.hstack((a, b)),也就是hstack的参数内不能有0数组。然后需要双括号,合并成一个参数
a = np.arange(5)
b = np.arange(5)
d = np.hstack((a, b))
begin = time.time()
for n in range(0,1280):
d = np.hstack((d, b))
end = time.time()
print(d)
print(len(d))
print("花费时间:", end - begin)
-------输出------
[0 1 2 ... 2 3 4]
6410
花费时间: 0.00699305534362793
4. row_stack
也是两个参数两个括号
a = np.array([[1, 2, 3], [7, 8, 9]]) b = np.array([[4, 5, 6], [1, 2, 3]]) print(a) print(b) d = np.row_stack((a,b)) # d = np.c_[a,b] print(d) ------输出-------- [[1 2 3] [7 8 9]] [[4 5 6] [1 2 3]] [[1 2 3] [7 8 9] [4 5 6] [1 2 3]]二、 按列合并 1 . c_r
np.r_是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等。
同上
同上
3. vstack同上
三、 按轴2合并注意括号的个数,这个是在轴二上
a = np.array([1,2]) b = np.array([3,4]) print(np.dstack((a,b))) ---------输出------- [[[1 3] [2 4]]]4、 多数组合并
concatenate()函数
效率应该比append高,但是要求数组长度相同形状,比如一维,相同的二维等
numpy.concatenate((a1,a2,...), axis=0) a = np.arange(5) b= np.zeros(4) c = np.concatenate((a,b)) print(c) #[0. 1. 2. 3. 4. 0. 0. 0. 0.]
时间对比(一维)
b=np.zeros(45875200)
a = np.arange(143360)
begin1 = time.time()
for n in range(0,320): # 切片赋值
b[143360*n:143360+143360*n]=a
end1 = time.time()
print(b[5656:5666])
print("花费时间:", end1 - begin1)
c = []
begin2 = time.time()
for n in range(0,320):
c= np.append(c,a)
end2 = time.time()
print(c[5656:5666])
print("append 花费时间:", end2 - begin2)
d = []
begin3 = time.time()
for n in range(0,320):
d = np.concatenate((d,a))
end3 = time.time()
print(d[5656:5666])
print("concatenate 花费时间:", end3 - begin3)
输出
[5656. 5657. 5658. 5659. 5660. 5661. 5662. 5663. 5664. 5665.] 花费时间: 0.10589170455932617 [5656. 5657. 5658. 5659. 5660. 5661. 5662. 5663. 5664. 5665.] append 花费时间: 25.331040859222412 [5656. 5657. 5658. 5659. 5660. 5661. 5662. 5663. 5664. 5665.] concatenate 花费时间: 25.269352912902832



