chapter.numpy1.1 ndarray多维数组

乍见之欢

ndarray是什么

NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。
ndarray 对象是用于存放同类型元素的多维数组。
ndarray 中的每个元素在内存中都有相同存储大小的区域。ndarray对象是一个快速而灵活的数据集容器。

创建ndarray数组

通过numpy中的array函数就可以创建ndarray数组。
注:numpy能将序列数据(列表,元组,数组等)转化为ndarray数组。
实例:

import numpy as np
data1=[1,3,5,7,9]#列表类型
data2=(0,2,4,6,8)#元组类型
data3=[[1,3,5,7,9],[0,2,4,6,8]]#多维数组
array1=np.array(data1)
array2=np.array(data2)
array3=np.array(data3)
print(array1)
print(array2)
print(array3)

运行结果:

[1 3 5 7 9]
[0 2 4 6 8]
[[1 3 5 7 9]
 [0 2 4 6 8]]

当创建好ndarray数组时,会同时存储ndarray的shape和dtype,shape为数组维度大小和长,dtype为ndarray的数据类型。
例:

import numpy as np
data=[1,3,5,7,9]
array=np.array(data)
print(array)
print(array.shape)
print(array.dtype)

运行结果:

[1 3 5 7 9]
(5,)
int32

当数组中有整形和浮点型数据时,dtype数据类型为浮点型。
例:

import numpy as np
data=[1,3,5.3,7,9]
array=np.array(data)
print(array)
print(array.shape)
print(array.dtype)

运行结果:

[1.  3.  5.3 7.  9. ]
(5,)
float64

除了np.array方法创建数组外,还可以使用其他一些函数创建,例:zeros函数,zeros函数可以创建指定长度全为0的数组。ones函数,可以创建指定长度全为1的数组。empty函数,可以创建一个没有具体数值得数组。arange函数类似于range。

import numpy as np
array1=np.zeros(5)
array2=np.zeros((3,5))
array3=np.ones(5)
array4=np.ones((3,5))
array5=np.empty((3,3,3))
array6=np.arange(5)
print(array1)
print(array2)
print(array3)
print(array4)
print(array5)
print(array6)

运行结果:

[0. 0. 0. 0. 0.]
[[0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0.]]
[1. 1. 1. 1. 1.]
[[1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]]
[[[6.23042070e-307 1.89146896e-307 1.37961302e-306]
  [6.23053614e-307 6.23053954e-307 9.34609790e-307]
  [8.45593934e-307 9.34600963e-307 9.34603000e-307]]

 [[9.34593493e-307 1.86920872e-306 6.23054972e-307]
  [1.42419530e-306 8.90098127e-307 8.01106038e-307]
  [8.45603441e-307 6.23059726e-307 2.22522597e-306]]

 [[1.06810268e-306 6.23052935e-307 1.33511562e-306]
  [6.89805151e-307 2.22522597e-306 1.33511969e-306]
  [8.34426039e-308 2.10081501e-312 2.10081501e-312]]]
[0 1 2 3 4]

ndarray数据类型转换

数组的数据类型有很多种,常见的数据类型为:整数(int)浮点数(float)复数(complex)布尔值(bool)字符串(_string)
数据类型转换函数astype
实例:

import numpy as np
data=[1,3,5.3,7,9]
array=np.array(data)
print(array.dtype)

运行结果:

float64

转换为整数

import numpy as np
data=[1,3,5.3,7,9]
array=np.array(data)
print(array)
print(array.dtype)
array=array.astype(np.int)
print(array)
print(array.dtype)

运行结果:

[1.  3.  5.3 7.  9. ]#转换前
float64#类型
[1 3 5 7 9]#转换后
int32#类型

注:浮点数转化为整数时,小数点后全部截断。不是四舍五入。

久处不厌

数组变换

数组重塑
对于定义好的数组可以使用reshape方法改变数组维度。
实例:

import numpy as np
array=np.zeros(10)
print(array)
print(array.reshape((5,2)))

运行结果:

[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[[0. 0.]
 [0. 0.]
 [0. 0.]
 [0. 0.]
 [0. 0.]]

多维数组同样也可以重塑。
相反的数据散开函数ravel,扁平化flatten函数

import numpy as np
array=np.zeros(10)
print(array)
print(array.reshape((5,2)))
print(array.ravel())
print(array.flatten())

运行结果:

[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[[0. 0.]
 [0. 0.]
 [0. 0.]
 [0. 0.]
 [0. 0.]]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]

数组合并
数组的合并用于几个数组间的操作,concatenate方法通过指定轴方向,即将多个数组合并在一起。

import numpy as np
array1=np.arange(10).reshape((5,2))
print(array)
array2=np.arange(10,20).reshape(5,2)
print(array2)
print(np.concatenate([array1,array2],axis=0))

运行结果:

[[0 1]
 [2 3]
 [4 5]
 [6 7]
 [8 9]]
[[10 11]
 [12 13]
 [14 15]
 [16 17]
 [18 19]]
[[ 0  1]
 [ 2  3]
 [ 4  5]
 [ 6  7]
 [ 8  9]
 [10 11]
 [12 13]
 [14 15]
 [16 17]
 [18 19]]

数组合并也可以使用vstack和hstack

import numpy as np
array1=np.arange(10).reshape((5,2))
print(array)
array2=np.arange(10,20).reshape(5,2)
print(array2)
print(np.vstack([array1,array2]))

运行结果同上。

import numpy as np
array1=np.arange(10).reshape((5,2))
print(array)
array2=np.arange(10,20).reshape(5,2)
print(array2)
print(np.hstack([array1,array2]))

运行结果:

[[0 1]
 [2 3]
 [4 5]
 [6 7]
 [8 9]]
[[10 11]
 [12 13]
 [14 15]
 [16 17]
 [18 19]]
[[ 0  1 10 11]
 [ 2  3 12 13]
 [ 4  5 14 15]
 [ 6  7 16 17]
 [ 8  9 18 19]]

数组拆分
使用split方法进行拆分。

import numpy as np
array1=np.arange(10).reshape((5,2))
array2=np.arange(10,20).reshape(5,2)
a=np.hstack([array1,array2])
b=np.split(a,[2,3])
print(b)

运行结果:

[array([[ 0,  1, 10, 11],
       [ 2,  3, 12, 13]]), array([[ 4,  5, 14, 15]]), array([[ 6,  7, 16, 17],
       [ 8,  9, 18, 19]])]

数组转置
使用transpose方法可以实现转置。

import numpy as np
array=np.arange(10).reshape((5,2))
print(array)
a=array.transpose((1,0))
print(a)
[[0 1]
 [2 3]
 [4 5]
 [6 7]
 [8 9]]
[[0 2 4 6 8]
 [1 3 5 7 9]]

T属性同样可以用来转置。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值