欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

chapter.numpy1.1 ndarray多维数组

发布时间:2024/5/14 编程问答 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 chapter.numpy1.1 ndarray多维数组 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

目录

    • 乍见之欢
      • ndarray是什么
      • 创建ndarray数组
      • 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属性同样可以用来转置。

总结

以上是生活随笔为你收集整理的chapter.numpy1.1 ndarray多维数组的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。