numpy学习进阶2

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])
>>> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值