Python数据分析模块numpy
一、如何创建一个数组?
- 创建全0数组
pa = np.zeros((2,2))
print(pa)
[[0. 0.]
[0. 0.]]
- 创建全1数组
同zeros函数用法相同,np.ones
3.创建指定元素的数组
b = np.array([[1,2,3],[2,3,4]])
print(b)
[[1 2 3]
[2 3 4]]
4.按照一定规律建立数组
c = np.arange(1,10,2)
print(c)
[1 3 5 7 9]
二、Numpy属性
- ndim #数组维度,即确定数组中某一特定元素,需要的指标个数
d = np.array([[1,2,3],[2,3,4]])
print(d.ndim)
2
print(d[1,1])
3
- shape #统计数组的行数和列数
print(d.shape)
(2, 3)
- size #统计数组中元素的个数
print(d.size)
6
- reshape #改变数组的形状
e = d.reshape(3,2)
print(e)
[[1 2]
[3 2]
[3 4]]
三、Numpy数组中基本运算
- 对应元素的加、减、乘、除
a = np.array([[1,2,3],[1,2,3]])
b = np.array([[1,1,1],[1,2,1]])
print(a*b)#乘法
[[1 2 3]
[1 4 3]]
2.矩阵的运算
b = b.reshape(3,2)
c = np.dot(a,b)
print(c)
[[9 6]
[9 6]]
3.其它基本运算
np.sum()#求和
np.mean()#求均值
np.argmax()#找出最大元素的下标
np.argmin()#找出最小元素的下标
np.cumsum()#累加运算
np.diff()#累差运算
转置的两种方法:
print(a)
[[1 2 3]
[1 2 3]]
np.transpose(a)#第一种
Out[34]:
array([[1, 1],
[2, 2],
[3, 3]])
print(a.T)#第二种
[[1 1]
[2 2]
[3 3]]
四、两个数组合并
- 上下合并
print(a.T)
[[1 1]
[2 2]
[3 3]]
print(b)
[[1 1]
[1 1]
[2 1]]
print(np.vstack((a.T,b)))
[[1 1]
[2 2]
[3 3]
[1 1]
[1 1]
[2 1]]
合并数组的函数还有np.concatenate()
A = np.arange(12).reshape(3,4)
np.concatenate((A,A),axis=0)
Out[12]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
列表的合并见下
import numpy as np
a = [[1,2],[3,4]]
b = np.concatenate([a,[a[0]]])
print(b)
[[1 2]
[3 4]
[1 2]]
五、数组的分割与拷贝
分割可分横向分割、纵向分割及不等量分割,可通过axis=0或1实现
print(np.split(A,3,axis=0))#实现横向分割
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
用“=”赋值,如:
B = A
print(B)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
若改变A中的元素,B中相应位置的元素也会发生改变
A[0][0]=2
print(B)
[[ 2 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
若采用copy()函数,赋值变不会改变,如:
C = A.copy()
A[0][0]=10
print(C)
[[ 2 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
但需要将copy使用的位置
六、数组内数据类型的转换
使用.astype函数可实现元素类型直接转换,并不改变元素自身的值。还有一个.dtype()函数,其用法也十分有趣。
C.astype(float)
Out[25]:
array([[ 2., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.]])