NumPy数值计算基础(数组的变化)

变化数组形态 

1.组合数组
    使用 hstack 函数实现数组横向组合:np.hstack((arr1,arr2))
    使用 vstack 函数实现数组纵向组合:np.vstack( (arr1,arr2) )
    使用 concatenate 函数实现数组横向组合:np.concatenate( (arr1,arr2), axis = 1) )
    使用 concatenate 函数实现数组纵向组合:np.concatenate( (arr1,arr2), axis = 0) )


2.切割数组
    使用 hsplit 函数实现数组横向分割: np.hsplit (arr1, 2)
    使用 vsplit 函数实现数组纵向分割: np.vsplit(arr, 2)
    使用 split 函数实现数组横向分割: np.split (arr, 2, axis=1)
    使用 split 函数实现数组纵向分割: np.split (arr, 2, axis=0)

 (1)数组转换操作

import numpy as np

# 生成一维数组
arr = np.arange(12)  
print(arr)
# 结果: [0  1  2  3  4  5  6  7  8  9 10 11]

# 转换为二维数组
arr2 = arr.reshape(3,4)  # 3行4列
print(arr2)   
# 结果:
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

 

(2)二维展平为一维

import numpy as np

arr = np.array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])
print(arr)   
# 结果:
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]


# 方法一: ravel
print('展平后的数组为: ',arr.ravel())  # 横向展平
# 结果: [ 0  1  2  3  4  5  6  7  8  9 10 11]

# 方法二: flatten
print('展平后的数组为: ',arr.flatten())   # 默认为C,表示横向展平
# 结果: [ 0  1  2  3  4  5  6  7  8  9 10 11]

print('展平后的数组为: ',arr.flatten('F'))   # 'F',表示纵向展平
# 结果: [ 0  4  8  1  5  9  2  6 10  3  7 11]

 

(3)数组组合方式

方法一:  横向拼接hstack((数组a,数组b));    纵向拼接vstack((数组a,数组b))

import numpy as np

arr3 = np.arange(12).reshape(3,4)
print(arr3)
# 结果: 
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

arr4 = 4*arr3
print(arr4)
# 结果: 
# [[ 0  4  8 12]
#  [16 20 24 28]
#  [32 36 40 44]]

print('横向拼接: ',np.hstack((arr3,arr4)))
# 结果:
# [[ 0  1  2  3  0  4  8 12]
#  [ 4  5  6  7 16 20 24 28]
#  [ 8  9 10 11 32 36 40 44]]

print('纵向拼接: ',np.vstack((arr3,arr4)))
# 结果:
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [ 0  4  8 12]
#  [16 20 24 28]
#  [32 36 40 44]]

方法二:  concatenate

axis = 1表示横坐标,横向变化;   axis = 0表示纵坐标,纵向变化

import numpy as np

arr3 = np.arange(12).reshape(3,4)
print(arr3)
# 结果: 
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

arr4 = 4*arr3
# print(arr4)
# 结果: 
# [[ 0  4  8 12]
#  [16 20 24 28]
#  [32 36 40 44]]

con = np.concatenate((arr3,arr4),axis = 1) 
print(con)
# 结果:
# [[ 0  1  2  3  0  4  8 12]
#  [ 4  5  6  7 16 20 24 28]
#  [ 8  9 10 11 32 36 40 44]]

con2 = np.concatenate((arr3,arr4),axis = 0) 
print(con2)
# 结果:
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [ 0  4  8 12]
#  [16 20 24 28]
#  [32 36 40 44]]

 

(4)数组分割方式

方法一:  横向分割hsplit(数组,列数);    纵向分割vsplit(数组,行数)

注意:  横向分割是列数在变化;  纵向分割是行数在变化

import numpy as np

arr5 = np.arange(16).reshape(4,4)
# print(arr5)
# 结果:
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [12 13 14 15]]

print('横向分割: ',np.hsplit(arr5,2))
# 结果:
# [array([[ 0,  1],
#        [ 4,  5],
#        [ 8,  9],
#        [12, 13]]), array([[ 2,  3],
#        [ 6,  7],
#        [10, 11],
#        [14, 15]])]

print('纵向分割: ',np.vsplit(arr5,2))
# 结果:
# [array([[0, 1, 2, 3],
#        [4, 5, 6, 7]]), array([[ 8,  9, 10, 11],
#        [12, 13, 14, 15]])]

方法二:  横向分割split(数组,列数,axis=1);    纵向分割split(数组,行数,axis=0);

axis = 1表示横坐标,横向变化;   axis = 0表示纵坐标,纵向变化

注意:  横向分割是列数在变化;  纵向分割是行数在变化

import numpy as np

arr5 = np.arange(16).reshape(4,4)
# print(arr5)
# 结果:
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [12 13 14 15]]

print('横向分割: ',np.split(arr5,2,axis=1)) 
# 结果:
# [array([[ 0,  1],
#        [ 4,  5],
#        [ 8,  9],
#        [12, 13]]), array([[ 2,  3],
#        [ 6,  7],
#        [10, 11],
#        [14, 15]])]

print('纵向分割: ',np.split(arr5,2,axis=0)) 
# 结果:
# [array([[0, 1, 2, 3],
#        [4, 5, 6, 7]]), array([[ 8,  9, 10, 11],
#        [12, 13, 14, 15]])]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值