python常用库之numpy(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36890572/article/details/82960589

Numpy库是Python的一种开源的数字拓展,可以用来存储和处理大型矩阵

1. 优点

    ① 多维数组ndarray,元素级计算,运算快;

    ② 数据读写方便;

2. 特点

    ① 数组定义的时候大小固定;

    ② 存储元素为同质(同种数据类型);

3. 数据的生成(numpy支持多种数据类型)

    a. 使用列表或元组数据构造

# 1.1 列表
arr1 = np.array([[1,2],[3,4]])
print(arr1)
'''
[[1 2]
 [3 4]]
'''
# 1.2 元组
arr2 = np.array(((1,2),(3,4)))
print(arr2)
'''
[[1 2]
 [3 4]]
'''

    b. 特殊数组 

# 1.3 特殊数组(0,1数组)
arr3 = np.ones((2,1))  # 可以使用[2,1]或(1,2),通常使用(1,2)
print(arr3)
arr4 = np.zeros((2,1))
print(arr4)
'''
[[ 1.]
 [ 1.]]
[[ 0.]
 [ 0.]]
'''

    c. 产生等差/等比数列的数组

# 1.4 产生等差数组
arr5 = np.arange(0,5,1)  # 起始,终止(不含),步长
print(arr5)
arr6 = np.linspace(0,5,5)  # 起始,终止,个数
print(arr6)
# 创建等比数列,比例为10,起始值10^1(10),终止值为10^2(100),有2个数的等比数列
arr3 = np.logspace(1,2,2,base=10)
print(arr3)
s = 'abcd'
arr4 = np.fromstring(s,dtype=np.int8)
print(arr4)
'''
[0 1 2 3 4]
[ 0.    1.25  2.5   3.75  5.  ]
[  10.  100.]
[ 97  98  99 100]
'''

    d. 产生随机数数组

# 1.5 随机数
arr7 = np.random.random((3,2))
print(arr7)
'''
[[ 0.76359424  0.12621422]
 [ 0.11343905  0.28138512]
 [ 0.36330518  0.6561023 ]]
'''

    e. 改变数组的形式(特别,当reshape(1,n)时,即实现多维数组的展开)

# 1.6 改变数组的形状
arr8 = np.arange(0,6).reshape(2,3)
print(arr8)
'''
[[0 1 2]
 [3 4 5]]
'''

4. 基本操作

    a. 算术运算(加、减、乘、除、矩阵积)

# 2.1 算术运算
arr1 = np.arange(0,4).reshape(2,2)
print(arr1)
arr1_mul = arr1*2  # 数组点积
print(arr1_mul)  # [[ 2  3]
arr2 = np.arange(0,4).reshape(2,2)
arr1_mul = arr1.dot(arr2)  # 矩阵乘积
print(arr1_mul)
'''
原数组:
[[0 1]
 [2 3]]
数组中每个元素乘以2
[[0 2]
 [4 6]]
数组与数组之间的乘积,遵循矩阵的乘法(一行乘以一列)
[[ 2  3]
 [ 6 11]]
'''
# 2.2 自增和自减
arr3 = np.arange(0,4)
arr3+=1
print(arr3)  # [1 2 3 4]
arr3-=1
print(arr3)  # [0 1 2 3]

    说明:在Python中没有++或--运算符,代替的是:+=1,-=1

    b. 常用数学函数

# 向下取整
arr1 = np.random.random((1,3))-0.5
print(arr1)
arr1_floor = np.floor(arr1)
print(arr1_floor)
arr1_around = np.round(arr1,3)  # 保留3位小数
print(arr1_around)
'''
# 向下取整
[[ 0.14463441 -0.09867913  0.47058381]]
[[ 0. -1.  0.]]
[[ 0.015  0.182 -0.412]]
'''

常用函数参考:https://www.cnblogs.com/TensorSense/p/6795995.html

5. 数据索引(抽取数组中的一部分元素生成新的数组)

# 1.一维数组索引
a = np.arange(10)
print(a)#[0 1 2 3 4 5 6 7 8 9]
print(a[3:6])#3,4,5不包含6的值
print(a[:3])#不写从0开始
print(a[1:8:2])#1-8,步长为2
print(a[::-1])#-1表示反转数组
b = np.random.rand(10)
print(b[b>0.5])#b中元素值大于0.5的值
# 2. 二维数组索引
arr1 = np.arange(0,9).reshape((3,3))
print(arr1)
arr1_query = arr1[0:2,1:] # 分别切行和列
print(arr1_query)
'''
[[0 1 2]
 [3 4 5]
 [6 7 8]]
[[1 2]
 [4 5]]
'''

参考:

1.《Python数据分析实战》

猜你喜欢

转载自blog.csdn.net/qq_36890572/article/details/82960589