在python中,我们安装需要用的库主要有三种途径,下面以numpy库的安装介绍给大家。
(1)在终端输入:pip install numpy
(2) 第二种:conda install numpy
(3)第三种:就是在python中,选择文件,点击设置,然后按照以下图片进行操作,也可以安装所需的库。
(清华源:https://pypi.tuna.tsinghua.edu.cn/simple)这是一个快速的安装库的源,下载完这个清华源后再安装库可以加快我们安装库的速度。建议可以使用一下。
【1】Numpy的导入:import numpy as np
import numpy as np
arr = np.array([[1,2],[4,5]])
print(arr)
print(arr.ndim) #秩
print(arr.size) #总个数
print(arr.shape) #形状
import numpy as np #导入numpy库
arr = np.arange(10) #创建一个范围为10的数组
print(arr) #输出这个数组
print(arr[1]) #索引出下标为1的数
在这个例子里,我们不难发现,:在这里代表的是取全部,1:3意思是从下标1行取到下标3行,而1:代表从1列取到最后。在这里一定要注意逗号前指的是行,逗号后指的是列,通过索引下标我们来实现数组的切片。
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。
1.形状相同:
import numpy as np
a = np.array([1,2,3,4,5])
b = np.array([5,6,7,8,9])
c = a+b
print(c)
结果:
2.形状不同:numpy 将自动触发广播机制。
import numpy as np
a = np.array([[0,0,0],
[10,10,10],
[20,20,20],
[30,30,30]])
b = np.array([0,1,2])
print(a+b)
import numpy as np
a = np.array([[0,0,0],
[10,10,10],
[20,20,20],
[30,30,30]])
b = np.array([0,1,2])
bb = np.tile(b,(4,1)) #重复b的各个维度
print(a+bb)
结果展示:
经过对比结果发现,两种结果好像没什么不同,只是两种途径而已。
迭代器最基本的任务就是可以完成对数组元素的访问。
import numpy as np
a = np.arange(6).reshape(2,3)
print(a)
print('输出迭代:')
for x in np.nditer(a):
print(x,end=',')
第二种方式:
import numpy as np
a = np.arange(6).reshape(2,3)
for x in np.nditer(a.T):
print(x,end=',')
print('\n')
for x in np.nditer(a.T.copy(order='C')):
print(x,end=',')
两种方式相差不大,只不过在第二种方式里进行了转至,在这里我们注意到,无论转至不转至输出结果都一样的,那是因为print(x,end=',')这句并没有指定输出结果是转至后的列表,所以,它的输出结果仍然是a,千万不要在这里迷糊哟!那么也就解释通C是代表行序优先了,它是对转至后做出的命令!! (控制遍历顺序:order='C'--行序优先 order='F'--列序优先。)
1.修改数组形状:
(1)reshape()函数 (2)numpy.ndarray.flat (3)flatten()函数 (4)ravel()函数
import numpy as np
a = np.arange(9)
print(a)
b = a.reshape(3,3)
print(b)
for row in b:
print(row) #对数组中每个元素都进行处理,可以用flat属性,该属性是一个数组元素迭代器
print('迭代后的数组:')
for element in b.flat:
print(element)
c = b.flatten()
print(c)
print(b.ravel())
2. 翻转数组
(1)transpose()函数:对换数组的维度 (2)ndarray.T:类似于transpose()函数
(3)rollaxis()函数:向后滚动特定的轴到一个特定位置
(4)swapaxes()函数:交换数组的两个轴
import numpy as np
a = np.arange(12).reshape(3,4)
print("原数组:")
print(a)
print("对换数组:")
print(np.transpose(a))
b = a.T
print("用T转换数组:")
print(b)
c = np.rollaxis(a,1)
print('用rollaxis对x轴转换数组:')
print(c)
d = np.rollaxis(a,0)
print('用rollaxis对y轴转换数组:')
print(d)
输出结果:
swapaxes()函数:
import numpy as np
a = np.arange(24).reshape(2,3,4)
print(a)
print(a.shape)
print('转换后的数组:')
b = np.swapaxes(a,2,0)
print(b)
print(b.shape)
结果展示:
3.修改数组维度
broadcast()函数:用于模仿广播的对象。
broadcast_to()函数:将数组广播到新形状。
expand_dims()函数:扩展数组的形状。
squeeze()函数:从给定数组的形状中删除一维的条目。
4.连接分割数组
(1)concatenate()函数:用于沿指定轴连接相同形状的两个或多个数组。
(2)stack()函数:用于沿新轴连接数组序列。
(3)hstack()函数:通过水平堆叠来生成数组。
(4)vstack()函数:通过垂直堆叠来生成数组。
分割:
(1)split()函数:函数沿特定的轴将数组分割为子数组。
(2)hsplit()函数:用于水平分割数组。
(3)vsplit()函数:用于垂直分割数组。
5.数组元素的添加与删除
添加:
(1)resize()函数:返回指定大小的新数组。
(2)append()函数:在数组的末尾添加值。
(3)insert()函数:在给定索引之前,沿给定轴在输入数组中插入值。
删除:
(1)delete()函数:返回从输入数组中删除指定子数组的新数组。
(2)unique()函数:去除数组中的重复元素。