用法和列表一样,不用在意参数里是不是有空列表(用列表代替一个参数),其他几个好像都不可这样
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.]
colum
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]]
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
也是两个参数两个括号
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]]
np.r_是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等。
同上
同上
同上
注意括号的个数,这个是在轴二上
a = np.array([1,2])
b = np.array([3,4])
print(np.dstack((a,b)))
---------输出-------
[[[1 3]
[2 4]]]
效率应该比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
觉得append和concatenate在一维上没啥区别