NumPy中的数据结构
包括ndarray 和matrix,需要引入NumPy。
数组是指 :存储多维相同类型数据的数据结构,用[]表示
创建数组对象
import numpy as np
array1 = np.array([1,2,3,4,5,6,2,1,0])
a2 = np.arange(5)#创建 [0 1 2 3 4] 的一维数组
a3 = np.ones((2,2))#创建 [[1. 1.] [1. 1.]] 两行两列的全1数组
a4 = np.empty((2,2))#创建两行两列的全空数组
a5 = np.random.randn(4,2)#创建4行2列的随机数组
a6 = np.linspace(0,10,3)#创建从0到10随机的数字,包含10的9个元素的数组
ndarray数组查询操作
array2 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
array1[4:]#查询当前元素在数组中以后的元素,如果查询的值数组中没有则为空
array2[1:3,2:4]#1:3表示第1行到第2行,2:4表示第2列到第3列 的切片 左闭右开原则
数组常用属性
#注意必须是矩阵格式或者数组格式
array3 = array1.reshape(3,-1)#改变维度为m行、d列 (-1表示列数自动计算,d= a*b /m )
array4 = array2.reshape(-1,3)#改变维度为d行、m列 (-1表示行数自动计算,d= a*b /m )
array3.shape #查看数据的行数和列数
array3.dtype#查看元素的数据类型
array3.size#查看数组的个数
array3.itemsize#查看数组数据类型字节数
array3.ndim #查看数组维度
数组增加操作
#注意必须保持维度一致
array3 = np.append(array2,[[12,15,17,18]],axis=0)#axis=0 添加一行
array4 = np.append(array2,[[1],[2],[3]],axis=1)#axis=1添加一列
数组删除操作
array3 = array2
print('原始数据\n',array3)
array4= np.delete(array3,1,axis = 0) #axis = 可以不要写
array5= np.delete(array3,(1,2), 0)
array6= np.delete(array3,(1,2), 1)
print('删除行数据\n',array4)
print('删除多行数据\n',array5)
print('删除多列数据\n',array6)
原始数据
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
删除行数据
[[ 1 2 3 4]
[ 9 10 11 12]]
删除多行数据
[[1 2 3 4]]
删除多列数据
[[ 1 4]
[ 5 8]
[ 9 12]]
数组的修改操作
array2[1:2] = 0
print('数组批量赋值\n',array2)
array3 = array2.T #二维数组转置
array3[1][1] = 100
print('修改数值\n',array3)
数组批量赋值
[[ 1 2 3 4]
[ 0 0 0 0]
[ 9 10 11 12]]
修改数值
[[ 1 0 9]
[ 2 100 10]
[ 3 0 11]
[ 4 0 12]]
数组的堆叠
arr1 = np.array([1,2,3])
arr2 = np.array([4,5,6])
print('纵向堆叠后:\n',np.vstack((arr1,arr2)))
print('横向堆叠后:',np.hstack((arr1,arr2)))
纵向堆叠后:
[[1 2 3]
[4 5 6]]
横向堆叠后: [1 2 3 4 5 6]
数组转换为其它数据结构
arr3 = np.array([[1,2,3,],[4,5,6]])
import pandas as pd
dfarr = pd.DataFrame(arr3)
print('Ndarray转为DataFrame的结果是:\n',dfarr)
arr4 = dfarr.values
print('DataFrame转为Ndarray的结果是:\n',arr4)
Ndarray转为DataFrame的结果是:
0 1 2
0 1 2 3
1 4 5 6
DataFrame转为Ndarray的结果是:
[[1 2 3]
[4 5 6]]