Numpy
hi,大家好,我是爱吃香蕉的猴子,最近开始学习一点python数据分析的知识,也希望后面能学到机器学习,但估计学不到,这块知识自己平时也用不到,主要还是为了装逼吧,不管怎么样 学点东西还是可以让人假装充实的(略带心酸) 。。。。。
Numpy的英文全称Numerical Python, 该库时基于python语言的科学数字计算库。
主要功能(课本知识)
- 提供快速、节约空间的多维数组,并具有矢量运算和复杂的广播能力。
- 为基于数据的计算提供大量的标准数学函数。
- 提供各种读写磁盘文件和内存映射文件的工具,打通文件与数组交换数据的通道。
- 提供线性代数、傅里叶交换、随机生成等高级数学功能。
- 提供C C++等语言的接口支持,方便专业研究人员扩充Numpy功能。
主要支持对象 - ndarray时Numpy的数据存储对象,代表了N维数组,用于存储不同维数的不同类型的数据。
- ufunc时能够对数组进行处理的标准函数。Numpy的很多函数都是C语言写的,执行非常快。
数组
用array建立数组
- import numpy as np
- b1 = np.array([[100, 98, 99], [88, 78, 95]])
- print(b1)
arange()函数
h1 = np.arange(0, 5, 0.5)
print(h1)
[0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. 4.5]
start; stop; step
linspace()函数
- 均匀步长的样本数组。
il=np.linspace(0, 4, 4)
print(il)
[0. 1.33333333 2.66666667 4. ]
start; stop; nums
step = (stop - start) / (num-1)
ones()函数
- 产生值为0的数组;
empty()函数 - 产生不定值的数组
logspace()函数 - 返回在对数刻度上均匀间隔的数字;
full函数 - 返回指定值的数组;
f10 = np.full(5, 10)
print(f10)
[10 10 10 10 10]
repeat()函数
- 建立每个元素重复N次的数组;
np.repeat([0, 1, 0], 5)
array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0])
数组属性的使用
ar1 = np.array([['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]) # 建立3行3列值为字符型的二维数组
print(ar1)
ar1.ndim # 返回数组的维数
ar1.shape # 返回数组的形状大小
ar1.size # 数组元素个数
[['a' 'b' 'c']
['d' 'e' 'f']
['g' 'h' 'i']]
数组方法的使用
- 改变形状
t1 = np.arange(9)
print(t1)
t2=t1.reshape(3, 3) # 三行三列
print(t2)
[0 1 2 3 4 5 6 7 8]
[[0 1 2]
[3 4 5]
[6 7 8]]
- all方法,判断指定的数组元素是否都是非0,是则返回True, 否则返回false.
m1=np.ones([1, 0, 2]).all()
print(m1)
- any方法,判断数组元素有非0值,有则返回True, 否则返回False.
- copy方法,复制数组副本.
ar2 = ar1
id(ar1)
id(ar2)
在映射的情况下,运算速度快,因为无需要开辟新的内存地址,但是改变一个数组的元素值,会影响另外一个数组。
- astype方法,改变数组元素类型;
数组的对接、分割
- 数组的对接
-
- 垂直对接
import numpy as np
c1 = np.array([[100, 99, 100],[98, 99, 97]])
print(c1)
c2 = np.array([[88, 88, 97], [85, 82, 89]])
print(c2)
np.vstack((c1, c2)) # vertical 保证列数一样
[[100 99 100]
[ 98 99 97]]
[[88 88 97]
[85 82 89]]
array([[100, 99, 100],
[ 98, 99, 97],
[ 88, 88, 97],
[ 85, 82, 89]])
-
- hstack()函数实现数组的水平对接,horizontal
在这里插入代码片r1=np.array(['1', 'Tom', 'China'])
r2=np.array(['man', '10', '13600000000'])
np.hstack((r1, r2))
array(['1', 'Tom', 'China', 'man', '10', '13600000000'], dtype='<U11')
- 3.数组分割hsplit(ar, N) 函数实现水平分割,ar为需要分割的数组,N为分割数。
r5=np.array([['1', 'Tom', 'China', 'boy', '10', '1360000000'],['2', 'Alice', 'US', 'girl', '9', '138111111']])
r6=np.hsplit(r5, 2)
print(r6)
r5=np.array([['1', 'Tom', 'China', 'boy', '10', '1360000000'],['2', 'Alice', 'US', 'girl', '9', '138111111']])
r6=np.hsplit(r5, 2)
print(r6)
[array([['1', 'Tom', 'China'],
['2', 'Alice', 'US']], dtype='<U10'), array([['boy', '10', '1360000000'],
['girl', '9', '138111111']], dtype='<U10')]
-
- 垂直分割vsplit(ar, N) ar为分割的数组,N为分割数
Code的搬运工V1.0