数据分析时非常重要。比list, dictionary 快很多
安装numpy
方法1:google搜索 numpy关键字 ——> 找到官网——>然后下载安装。
方法2:windows中运行命令行,输入 pip3 install numpy 直接安装。 前提要安装pip
#pip3 install pandas
python中的list是python的内置数据类型,list中的数据类不必相同的,而array的中的类型必须全部相同。
在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了
例如list1=[1,2,3,'a']需要4个指针和四个数据,增加了存储和消耗cpu。
如果a是array,结果是:[1 2 3 4 5]
如果a是list,结果是:[1, 2, 3, 4, 5]
Numpy属性
先给矩阵命名,列表转换成数组的方法
import numpy as np
array = np.array([[1,2,3],[4,5,6]])
print(array)
print("dim:",array.ndim) #是几维数组
print("shape:",array.shape) # 几行几列
print("size:",array.size) #总共多少元素
#输出
[[1 2 3]
[4 5 6]]
dim: 2
shape: (2, 3)
size: 6
Numpy 创建各种各样的array (矩阵或者数组)
import numpy as np
a = np.array([[1,2],[3,4]],dtype=np.float) # np.int np.int32 np.float32 还有16位的
print(a)
print(a.dtype)
[[1. 2.]
[3. 4.]]
float64
a=np.zeros((3,4)) #参数是一个shape
print(a)
a=np.ones((3,4),dtype = np.int16)
print(a)
a=np.empty((3,4)) # 什么都没有,其实是一个非常接近于0的数字
print(a)
#输出
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
[[1 1 1 1]
[1 1 1 1]
[1 1 1 1]]
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
a = np.arange(10,20,2) # 和range()类似
print(a)
a = np.arange(12).reshape((3,4))
print(a)
a = np.linspace(1,20,5) #数列. 感觉是等差数列。 同样可以用reshape()
print(a)
#输出
[10 12 14 16 18]
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[ 1. 5.75 10.5 15.25 20. ]
Numpy 的基础运算
a=np.array([10,20,30,40])
b=np.arange(4)
c = a-b
print(c)
c=a+b
print(c)
c=a*b
print(c)
c=b**3 # 平方, 三次方
print(c)
[10 19 28 37]
[10 21 32 43]
[ 0 20 60 120]
[ 0 1 8 27]
c = np.sin(a)
print(c)
c = np.cos(a)
print(c)
[-0.54402111 0.91294525 -0.98803162 0.74511316]
[-0.83907153 0.40808206 0.15425145 -0.66693806]
print(b<3) # 返回一个列表
print(b==3)
[ True True True False]
[False False False True]
a = np.array([[1,1],[0,1]])
b = np.arange(4).reshape(2,2)
print(a*b) # 对应元素相乘
print(np.dot(a,b)) #矩阵相乘
print(a.dot(b)) # 矩阵相乘
[[0 1]
[0 3]]
[[2 4]
[2 3]]
[[2 4]
[2 3]]
a = np.random.random((2,4)) #2行四列
print(a)
print(np.sum(a)) #整个矩阵求和
np.min(a) #最小值(没有输出)
np.max(a) #最大值(没有输出)
# 列数和行数当中的求和 最大值 最小值
print(np.sum(a,axis =1)) #0每一行中求和,1每一列
[[0.85361493 0.80152827 0.90154856 0.97235675]
[0.81265787 0.74607092 0.97307991 0.13673675]]
6.197593956612348
[3.5290485 2.66854545]
Numpy基础运算2
A = np.arange(2,14).reshape((3,4))
print(A)
print(np.argmin(A)) # argument 返回最小值所在索引
print(np.argmax(A))
print(np.mean(A)) #平均值
print(A.mean()) #由于A是np类型,所以可以这样调用
print(np.average(A)) # 另一种求平均值的方法
#print(A.average()) # 'numpy.ndarray' object has no attribute 'average'
# 个人觉得 要npmpy中有这个属性才可以调用。其实本质还是这种方式调用
print(np.median(A)) #中位数
print(np.cumsum(A)) # 是一个累加的过程,逐步相加
print(np.diff(A)) #累差。 后一个减去前一个
print(np.nonzero(A)) # 输出两个array,第一个表示非零的行数,第二个输出列数。可以定位那个数字非零。
print(np.sort(A)) #矩阵排序
#矩阵转置
print(np.transpose(A))
print(A.T)
print((A.T).dot(A)) #矩阵乘法
print(np.clip(A,5,9)) # 所有小于5的都变成5,所有大于9的变成9
#所有numpy指令都可以指定对于行计算还是对于列计算。 axis=0,1
[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
0
11
7.5
7.5
7.5
7.5
[ 2 5 9 14 20 27 35 44 54 65 77 90]
[[1 1 1]
[1 1 1]
[1 1 1]]
(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
[[ 2 6 10]
[ 3 7 11]
[ 4 8 12]
[ 5 9 13]]
[[ 2 6 10]
[ 3 7 11]
[ 4 8 12]
[ 5 9 13]]
[[140 158 176 194]
[158 179 200 221]
[176 200 224 248]
[194 221 248 275]]
[[5 5 5 5]
[6 7 8 9]
[9 9 9 9]]