数组很重要,它能够使你不用编写循环语句就可以对数据执行批量操作!然而python的6大基础数据类型中却并没有数组类型!所以我们需要使用numpy来构建我们的数组!
不用循环语句,直接将数据处理成可以进行批量操作的过程叫做数据的矢量化!然而程序员眼中数组的概念也就是我们物理学上的矢量,数学上的向量!
下面带来一些numpy中数组的简单运算以及使用
import numpy as np
#定义一个数组
test_array = np.array([[1,2,3],[3,4,5]])
###数组简单的加减乘除法
#加法
print(test_array+1)
#返回[[2 3 4][4 5 6]]
#减法
print(test_array-11)
#返回[[-10 -9 -8][ -8 -7 -6]]
#乘法
print(test_array*3)
#返回[[ 3 6 9][ 9 12 15]]
#除法
print(test_array/2)
#返回[[0.5 1. 1.5][1.5 2. 2.5]]
###数组的索引和切片
test_arr = np.arange(10)
print(test_arr)
print(test_arr[1])
print(test_arr[1:5])
###使用列表或数组来进行赋值
test_arr[1:5] = [6,6,6,6]
print(test_arr)
test_arr[1:5] = np.array([9,9,9,9])
print(test_arr)
###数组的单元素赋值
test_arr[1:5] = 12
print(test_arr)
#两个注意点
#(a)一个标量的赋值瞬间实现整个切片区域的赋值,叫做numpy的广播功能
#(b)数组切片和列表切片,仅数组切片有广播功能
###列表和数组的一个重要的区别
#跟列表切片最大的区别是数组切片是原数组的视图,这就意味着原数组数据不会被复制保留,视图上任何改变都会影响原数组。
#所以,数组切片赋值会改变原数组,列表切片赋值不会改变愿列表,想要改变列表需要直接给列表赋值。
#二维数组的索引和切片
#创建一个3x3的二维数组
test_arr = np.arange(9).reshape(3,3)
print(test_arr)
#取出4
print(test_arr[1,1])#第一个参数为行号,第二个参数为列号
#三维数组的索引和切片
#创建一个有两个3x3二位数组的三维数组
test_arr = np.arange(18).reshape(2,3,3)#第一个参数为总共有几个元素,第二个参数为行号,第三个参数为列号
print(test_arr)
#取出9
print(test_arr[1,0,0])
#若array切片时不想改变原array的结构,可以使用copy()先进行拷贝
test_xxx = np.arange(18).reshape(2,3,3)
test_ttt = test_xxx.copy()
test_ttt[1,0,0] = 333
print(test_xxx)
print(test_ttt)
###布尔形索引(进行筛选)
name = np.array(['wiz','gougou,','ac','lc'])
score = np.array([[99,99,99],[88,88,88],[81,87,66],[100,100,100]])
print(score[name=='wiz'])
###数组的转置
arr = np.arange(16).reshape(2,2,4)
print(arr)
print(arr.T)
###numpy的基本数学统计方法
#方差(体现数组中数据的离散情况,数值越小数据越稳定)
arr = np.arange(16).reshape(2,4,2)
print(arr.var())
#标准差
print(arr.std())