1、数组合并
(1)上下合并
代码:
import numpy as np
a = np.array([1,2,3])
b = np.array([1,2,3])
print(np.vstack((a,b)))
结果:
====================== RESTART: D:/untitled/numpy_3.py ======================
[[1 2 3]
[1 2 3]]
>>>
(2)左右合并
代码:
import numpy as np
a = np.array([1,2,3])
b = np.array([1,2,3])
print(np.hstack((a,b)))
结果:
====================== RESTART: D:/untitled/numpy_3.py ======================
[1 2 3 1 2 3]
>>>
2、横向数列变成纵向
代码:
import numpy as np
a = np.array([1,2,3])
b = np.array([1,2,3])
print(a[np.newaxis,:].shape)
print(a[np.newaxis,:])
print(a[:,np.newaxis].shape)
print(a[:,np.newaxis])
结果:
====================== RESTART: D:/untitled/numpy_3.py ======================
(1, 3)
[[1 2 3]]
(3, 1)
[[1]
[2]
[3]]
>>>
3、合并数组
函数:
import numpy as np
a = np.array([6,5,4])[:,np.newaxis]#原来1×3的矩阵变成3×1
b = np.array([1,3,1])[:,np.newaxis]#同上
print(np.hstack((a,b,b))) #横向合并
c = np.concatenate((a,b,b,a),axis = 1)#横向合并
d = np.concatenate((a,b,b,a),axis = 0)#纵向合并
print(c)
print(d)
结果:
====================== RESTART: D:/untitled/numpy_3.py ======================
[[6 1 1]
[5 3 3]
[4 1 1]]
[[6 1 1 6]
[5 3 3 5]
[4 1 1 4]]
[[6]
[5]
[4]
[1]
[3]
[1]
[1]
[3]
[1]
[6]
[5]
[4]]
>>>
4、分割数组
函数:
import numpy as np
a = np.arange(12).reshape((3,4))
print(a)
print(np.split(a,2,axis = 1))#竖着分2部分
print(np.split(a,3,axis = 0))#横着分3部分
结果:
====================== RESTART: D:/untitled/numpy_3.py ======================
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
>>>
注:一共12个数,你把它reshape变成3乘4的,那么你分割的时候,只能分割成每块都是相等的个数的结果,比如分成横着5块、6块、7块就不行。
机器学习会用到不等分分割:
函数:
import numpy as np
a = np.arange(12).reshape((3,4))
print(a)
print(np.array_split(a,3,axis = 1))#不等分3部分
结果:
>>>
====================== RESTART: D:/untitled/numpy_3.py ======================
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[11]])]
>>>
另外一种分割:
函数:
import numpy as np
a = np.arange(12).reshape((3,4))
print(a)
print(np.vsplit(a,3))#zong向分3部分
print(np.hsplit(a,2))#横向分2部分
结果:
====================== RESTART: D:/untitled/numpy_3.py ======================
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
>>>
5、数组赋值
函数:
>>> import numpy as np
>>> a = np.arange(4)
>>> print(a)
[0 1 2 3]
>>> b = a
>>> c = a
>>> d = b
>>> a[0] = 6 #改变a的值,以查看b、c、d的值是否改变
>>> a
array([6, 1, 2, 3])
>>> b
array([6, 1, 2, 3])
>>> c
array([6, 1, 2, 3])
>>> d
array([6, 1, 2, 3])
>>> b is a
True
>>> d is a #查看d是不是a,是的话就返回true
True
继续操作:
>>> d[1:3] = [22,33]
>>> d
array([ 6, 22, 33, 3])
>>> a
array([ 6, 22, 33, 3])
>>> b
array([ 6, 22, 33, 3])
>>> c
array([ 6, 22, 33, 3])
>>>
这表示,a,c,b,d四个是牵一发动全身的关系,一个变化,全部变,互相关联!
如果你不想这样,可以用copy,只是起值的传递,但是没有关联关系,你是你,我是我。
比如:
>>> b = a.copy()
>>> b
array([ 6, 22, 33, 3])
>>> a[3] = 20
>>> a
array([ 6, 22, 33, 20])
>>> b
array([ 6, 22, 33, 3])
>>>