100天精通Python(进阶篇)——第40天:pymongo操作MongoDB数据库基础+代码实战

Posted 袁袁袁袁满

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了100天精通Python(进阶篇)——第40天:pymongo操作MongoDB数据库基础+代码实战相关的知识,希望对你有一定的参考价值。

文章目录

100天精通Python(数据分析篇)——第50天:numpy进阶

文章目录

每篇前言

  • 🏆🏆作者介绍:Python领域优质创作者、华为云享专家、阿里云专家博主、2021年CSDN博客新星Top6

  • 🔥🔥本文已收录于Python全栈系列专栏《100天精通Python从入门到就业》
  • 📝​📝​此专栏文章是专门针对Python零基础小白所准备的一套完整教学,从0到100的不断进阶深入的学习,各知识点环环相扣
  • 🎉🎉订阅专栏后续可以阅读Python从入门到就业100篇文章还可私聊进两百人Python全栈交流群(手把手教学,问题解答); 进群可领取80GPython全栈教程视频 + 300本计算机书籍:基础、Web、爬虫、数据分析、可视化、机器学习、深度学习、人工智能、算法、面试题等。
  • 🚀🚀加入我一起学习进步,一个人可以走的很快,一群人才能走的更远!


一、数组操作

1. 查看数据形状

```python
>>> a1 = np.array([1,2,3,4,5])
>>> a1
array([1, 2, 3, 4, 5])
>>> a1.shape
(5,) # 括号内1个值表示一维数组
>>> a2 = np.array([[1,2,3,4],[5,6,7,8]])
>>> a2
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
>>> a2.shape 
(2, 4) # 括号2个值表示二维数组
>>> a3 = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
>>> a3
array([[[ 1,  2,  3],
        [ 4,  5,  6]],

       [[ 7,  8,  9],
        [10, 11, 12]]])
>>> a3.shape
(2, 2, 3) # 括号3个值表示三维数组

2. 修改数组形状

语句reshape(shape, order='C' )

作用:不改变数据的条件下修改形状

参数说明

  • shape:形状
  • order:C-按行,‘F’-- 按列,‘A’–原顺序,‘k’ -元素在内存中的出现顺序
>>>a = np.array([[1,2,3,4],[5,6,7,8]])
>>> a.reshape(4,2)
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])
# 再次查看数组形状发现只是临时修改      
>>> a.shape
(2, 4)
# 可以用一个变量来接收返回值
>>> b = a.reshape(4,2)
>>> b
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])

语句flatten( order='C')

作用:展平的数组元素并拷贝一份,顺序通常是"C风格"

注意:修改返回的数组不会对原数组产生影响

参数说明

  • order:‘C’-按行,‘F’–按列,‘A’–原顺序,‘k’ -元素在内存中的出现顺序
>>> c = np.array([[1, 2],[3, 4],[5, 6],[7, 8]])
>>> c
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])
>>> c.shape
(4, 2)
# 方法1
>>> c.reshape(c.shape[0]*c.shape[1],)
array([1, 2, 3, 4, 5, 6, 7, 8])
#  方法2
>>> c.flatten()
array([1, 2, 3, 4, 5, 6, 7, 8])

3. 数组和数的计算

numpy的广播机制造成的,在运算过程中,加减乘除的值被广播到所有的元素上面.


>>> a = np.array([[1,2,3,4,5],[6,7,8,9,10]])
>>> a
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])
>>> a + 1
array([[ 2,  3,  4,  5,  6],
       [ 7,  8,  9, 10, 11]])
>>> a - 1
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
>>> a * 2
array([[ 2,  4,  6,  8, 10],
       [12, 14, 16, 18, 20]])
>>> a / 10
array([[0.1, 0.2, 0.3, 0.4, 0.5],
       [0.6, 0.7, 0.8, 0.9, 1. ]])

4. 数组和数组的计算

两数组相同维度下加减乘除


>>> a = np.array([[1,2,3,4,5],[6,7,8,9,10]])
>>> a
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])
>>> b = np.arange(11,21).reshape(2,5)
>>> b
array([[11, 12, 13, 14, 15],
       [16, 17, 18, 19, 20]])
>>> a + b
array([[12, 14, 16, 18, 20],
       [22, 24, 26, 28, 30]])
>>> a - b
array([[-10, -10, -10, -10, -10],
       [-10, -10, -10, -10, -10]])
>>> a * b
array([[ 11,  24,  39,  56,  75],
       [ 96, 119, 144, 171, 200]])
>>> a / b
array([[0.09090909, 0.16666667, 0.23076923, 0.28571429, 0.33333333],
       [0.375     , 0.41176471, 0.44444444, 0.47368421, 0.5       ]])

二行5列 VS 一行5列


>>> a = np.arange(1,6).reshape(5,)
>>> a
array([1, 2, 3, 4, 5])
>>> b = np.arange(11,21).reshape(2,5)
>>> b
array([[11, 12, 13, 14, 15],
       [16, 17, 18, 19, 20]])
>>> a + b
array([[12, 14, 16, 18, 20],
       [17, 19, 21, 23, 25]])
>>> a * b
array([[ 11,  24,  39,  56,  75],
       [ 16,  34,  54,  76, 100]])

2行一列 VS 2行5列


>>> a = np.arange(1,3).reshape(2,1)
>>> a
array([[1],
       [2]])
>>> b = np.arange(11,21).reshape(2,5)
>>> b
array([[11, 12, 13, 14, 15],
       [16, 17, 18, 19, 20]])
>>> a + b
array([[12, 13, 14, 15, 16],
       [18, 19, 20, 21, 22]])
>>> a * b
array([[11, 12, 13, 14, 15],
       [32, 34, 36, 38, 40]])

不同维度

>>> a = np.arange(1,13).reshape(3,4)
>>> a
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])
>>> b = np.arange(1,11).reshape(2,5)
>>> b
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])
>>> a + b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: operands could not be broadcast together with shapes (3,4) (2,5)

5. 数组中的转置

转置是一种变换,对于numpy中的数组来说,就是在对角线方向交换数据,目的也是为了更方便的去处理数据

>>> t
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17]])

>>> t.transpose()
array([[ 0,  6, 12],
       [ 1,  7, 13],
       [ 2,  8, 14],
       [ 3,  9, 15],
       [ 4, 10, 16],
       [ 5, 11, 17]])
>>> t.swapaxes(1,0)
array([[ 0,  6, 12],
       [ 1,  7, 13],
       [ 2,  8, 14],
       [ 3,  9, 15],
       [ 4, 10, 16],
       [ 5, 11, 17]])
>>> t.T
array([[ 0,  6, 12],
       [ 1,  7, 13],
       [ 2,  8, 14],
       [ 3,  9, 15],
       [ 4, 10, 16],
       [ 5, 11, 17]])

以上的三种方法都可以实现二维数组的转置的效果,大家能够看出来,转置和交换轴的效果一样

6. 数组的拼接

数组水平或者竖直拼接很简单,但是拼接之前应该注意什么?
竖直拼接的时候:每一列代表的意义相同!!!否则牛头不对马嘴

如果每一列的意义不同,这个时候应该交换某一组的数的列,让其和另外一类相同

>>> t1 = np.arange(0,12).reshape(2,6)
>>> t1
array([[ 0,  1,  2,  3,  4,  以上是关于100天精通Python(进阶篇)——第40天:pymongo操作MongoDB数据库基础+代码实战的主要内容,如果未能解决你的问题,请参考以下文章

100天精通Python(进阶篇)---第37天:多线程(threading模块)

100天精通Python(数据分析篇)——第50天:numpy进阶

100天精通Python(进阶篇)——第38天:多进程文末送书三本

100天精通Python(爬虫篇)——第47天:selenium自动化操作浏览器

100天精通Python(基础篇)——第1天:Python和Vscode环境安装

100天精通Python(数据分析篇)——第52天:numpy完结