python玄阶斗技--NumPy入门

目录

一.NumPy介绍

二.创建数组

 1.一维数组创建

2.二维数组创建

3.zeros函数

4.ones函数

5.empty函数

6.arange函数

三.NumPy的数学操作

1.基本运算

2.矩阵运算

3.ndarray类的方法

四.数组堆叠

五.数组分隔


一.NumPy介绍

        在这里对NumPy的介绍我不想扯太多,只要知道NumPy是python中法一个科学计算的基础包,它是一个python库,主要实现多维数组的操作。

        调用NumPy数组的类是ndarray,也称为array。这里我们着重学习一下ndarray以下几个属性:

  • ndarray.ndim  数组轴的个数(维度),称为rank
  • ndarray.shape      数组的维度,例如:n行m列的矩阵,shape是(n,m)
  • ndarray.size   数组元素的总数,等于shape中n和m的积
  • ndarray.dtype    数组中元素类型的对象
  • ndarray.itemsize   数组中每个元素的大小
  • ndarray.data   该缓冲区中包含的实际元素

例如:

import numpy as np

numbers = np.arange(20).reshape(4, 5)
print(numbers.shape)  # 数组维度
print(numbers.ndim)  # 数组维度的个数
print(numbers.dtype.name)
print(numbers.size)  # 数组元素总数
print(numbers.itemsize)  # 数组的每个数组元素的字节大小
'''
(4, 5)
2
int64
20
8
'''

二.创建数组

 1.一维数组创建

import numpy as np

number = np.array([1, 2,3, 4, 5, 6, 7, 8])  # 注意参数是列表
print(number)
'''
[1 2 3 4 5 6 7 8]
'''

2.二维数组创建

import numpy as np

number = np.array([(1, 2, 3, 4, 5, 6, 7, 8),( 9, 8, 7, 6, 5, 4, 3, 2)])
print(number)
'''
[[1 2 3 4 5 6 7 8]
 [9 8 7 6 5 4 3 2]]
'''

        多维数组就是在二维的基础上加

3.zeros函数

        zeros函数可以创建元素全为0的数组

import numpy as np

number = np.zeros((4,5))
print(number)
'''
[[0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0.]]
'''

4.ones函数

        ones函数跟上面的zeros函数一样,ones函数创建元素全为1的数组

import numpy as np

number = np.ones((4,5))
print(number)
'''
[[1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]]
'''

5.empty函数

        创建一个随机元素的数组

import numpy as np

number = np.empty((4,5))
print(number)
'''
[[0.  0.  0.3 1.  0. ]
 [0.  1.  1.  1.  1. ]
 [1.  1.  1.  0.  0. ]
 [1.  0.5 0.  0.  1. ]]
'''

6.arange函数

        arange函数和range函数类似,都是在规定范围内生成数

import numpy as np

number = np.arange(1, 20, 2)
number1 =np.arange(20).reshape(4,5)
print(number)
print(number1)
'''
[ 1  3  5  7  9 11 13 15 17 19]

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]
'''

三.NumPy的数学操作

1.基本运算

        数组也支持基本的数学操作

import numpy as np

a = np.array([1, 9, 4, 7, 2])
b = np.array([3, 5, 2, 8, 3])
c = a + b
f = a - b
d = b * 5
e = a ** 2
print('a:{}\nb:{}\n加法:{}\n减法:{}\nb乘5:{}\na的平方:{}'.format(a, b, c, f, d, e))
'''
a:[1 9 4 7 2]
b:[3 5 2 8 3]
加法:[ 4 14  6 15  5]
减法:[-2  4  2 -1 -1]
b乘5:[15 25 10 40 15]
a的平方:[ 1 81 16 49  4]
'''

2.矩阵运算

        数组的乘法运算用*号,矩阵乘法可以用@或dot函数

import numpy as np

a = np.array([1, 9, 4, 7, 2])
b = np.array([3, 5, 2, 8, 3])
print('乘法:{}\n矩阵乘法:{}或{}'.format(a*b,a@b,a.dot(b)))
'''
乘法:[ 3 45  8 56  6]
矩阵乘法:118或118
'''

3.ndarray类的方法

        ndarray类的几个方法,sum方法求元素和,min求元素最小值,max求元素最大值

import numpy as np

a = np.array([1, 9, 4, 7, 2])
print('sum:{}\nmax:{}\nmin:{}'.format(a.sum(),a.max(),a.min()))
'''
sum:23
max:9
min:1
'''

四.数组堆叠

        数组的堆叠就是多个数组合成一个数组,其中,vstack()垂直堆叠,hstack()水平堆叠,column_stack将第一个数组按列堆叠到第二个数组中

import numpy as np

a = np.array([1, 9, 4, 7, 2])
b = np.array([3, 4, 2, 6, 8])
print('vstack:\n{}\nhstack:\n{}\ncolumn_stack:\n{}'.format(np.vstack((a, b)), np.hstack((a, b)), np.column_stack((a, b))))
'''
vstack:
[[1 9 4 7 2]
 [3 4 2 6 8]]
hstack:
[1 9 4 7 2 3 4 2 6 8]
column_stack:
[[1 3]
 [9 4]
 [4 2]
 [7 6]
 [2 8]]
'''

五.数组分隔

        hspalit()按列拆分(水平),vspalit()按行拆分(垂直),array_split()按要求拆分数组个数

hsplit(ary,indice_or_section) # 后一个参数表示拆分的轴

vsplit(ary,indice_or_section)

aray_split(ary,indices_or_section,axis=0) # axis表示拆分子数组的个数
import numpy as np

a = np.arange(20)
b = np.arange(20).reshape(4, 5)
c = np.arange(20).reshape(4, 5)
print('按第二列拆分:{}'.format(np.hsplit(a, 2)))
print('按第二行拆分:{}'.format(np.vsplit(b, 2)))
print('拆分为2个子数组:{}'.format(np.array_split(c, 2)))
'''
按第二列拆分:[array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])]
按第二行拆分:[array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]]), array([[10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])]
拆分为2个子数组:[array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]]), array([[10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])]
'''

猜你喜欢

转载自blog.csdn.net/weixin_63009369/article/details/129862238