一、基本概念
1、什么是Numpy
一个在Python中做科学计算的基础库,重在数值计算,也是大部分PYTHON科学计算库的基础库,多用于在大型、多维数组上执行数值运算
二、数组的创建和改变维数
1、numpy创建数组(矩阵)
import numpy as np
# 三种创建数据的方法,数组的类名为ndarray,数据的类型为int32
t1 = np.array([1, 2, 3])
print(t1)
print(type(t1))
t2 = np.array(range(10))
print(t2)
print(type(t2))
t3 = np.arange(4, 10, 2)
print(t3)
print(type(t3))
print(t3.dtype)
E:\python3\python.exe H:/PythonProject/DataAnalyse/numpy_course/new_arry.py
[1 2 3]
<class 'numpy.ndarray'>
[0 1 2 3 4 5 6 7 8 9]
<class 'numpy.ndarray'>
[4 6 8]
<class 'numpy.ndarray'>
int32
指定创建数组的数据类型
import numpy as np
t4 = np.array(range(1, 4), dtype=float32)
print(t4)
print(t4.dtype)
----------------------------------------------------------------------------------
E:\python3\python.exe H:/PythonProject/DataAnalyse/numpy_course/new_arry.py
[1. 2. 3.]
float32
Process finished with exit code 0
import numpy as np
t5 = np.array([1,0,0,1,1,0],dtype=bool)
print(t5)
print(t5.dtype)
---------------------------------------------------------------------------
E:\python3\python.exe H:/PythonProject/DataAnalyse/numpy_course/new_arry.py
[ True False False True True False]
bool
修改数组的数据类型:
t5 = np.array([1,0,0,1,1,0],dtype=bool)
print(t5)
print(t5.dtype)
t6 = t5.astype("int8")
print(t6)
print(t6.dtype)
--------------------------------------------------------------
E:\python3\python.exe H:/PythonProject/DataAnalyse/numpy_course/new_arry.py
[ True False False True True False]
bool
[1 0 0 1 1 0]
int8
取小数并保留两位
t7 = np.array([random.random() for i in range(10)])
print(t7)
print(t7.dtype)
t8 = np.round(t7, 2)
print(t8)
-------------------------------------------------------------------------
E:\python3\python.exe H:/PythonProject/DataAnalyse/numpy_course/new_arry.py
[0.04811729 0.1599298 0.37288476 0.01717569 0.44839734 0.65061334
0.33807003 0.60770559 0.6994518 0.35313622]
float64
[0.05 0.16 0.37 0.02 0.45 0.65 0.34 0.61 0.7 0.35]
数组的形状:
修改数组的形状:reshape()接收的参数是一个元组
调用reshape()方法不会对数组本身进行修改
使用新的参数取接受reshape()的返回值
把数组转化为1维数据
当不知道数组的个数进行降维时
shape[0]*shape[1]代表总共个数
另一个简单方法, 按照行进行展开:
三、数组的计算
1、数组和数的计算
给数组加一个数即给每一个元素都加上一个数字,分别进行计算。
这是一个Numpy的广播机制造成的,在运算过程中,加减乘输的值被广播到所有的元素上面。
2、数组和数组的计算
不同维度的计算
满足后缘维度的轴长相符的例子
长度为1的例子:
shape为(2,3,4)和(2,4)
轴(axis):在numpy中可以理解为方向,使用0,1,2…数字表示,对于一个一维数组,只有一个0轴,对于2维数组(shape(2,2)),有0轴和1轴,对于三维数组(shape(2,2, 3)),有0,1,2轴
四、numpy读取数据
np.loadtxt(fname,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)
现在这里有一个英国和美国各自youtube1000多个视频的点击,喜欢,不喜欢,评论数量([“views”,“likes”,“dislikes”,“comment_total”])的csv,运用刚刚所学习的只是,我们尝试来对其进行操作
import numpy as np
us_file_path = "US_video_data_numbers.csv"
uk_file_path = "GB_video_data_numbers.csv"
t1 = np.loadtxt(us_file_path,dtype=int,delimiter=",")
t2 = np.loadtxt(uk_file_path,dtype=int,delimiter=",")
print(t1)
print('*'*50+'分割线'+'*'*50)
print(t2)
转置矩阵的三种方法:
五、numpy索引和切片
取数组中的某一行
import numpy as np
us_file_path = "US_video_data_numbers.csv"
t2 = np.loadtxt(us_file_path,dtype=int,delimiter=",")
print(t2)
print('*'*50+'分割线'+'*'*50)
# 取某一行
print(t2[2]) # 或者print(t2[2, ])
取连续的多行
print(t2[2:])
#或者 print(t2[2:, :]) 逗号后面的冒号表示全部列都取到
取不连续的多行
变为二维数组且不连续就要再加一个中括号
print(t2[[1,4,7]])
#print(t2[[1,4,7],:])
取列
# 取某列
print(t2[:, 0])
# 取连续的多列
print(t2[:, 2:])
# 取不连续的多列
print(t2[:,[1,3]])
取第三行,第四列的值
print(t2[2,3])
取多行和多列,取第3行到第5行,第二列到第四列的结果:
print(t2[2:5,1:4])
取一些不相邻的点
print(t2[[0,2,2],[0,1,3]])