NumPy是Python中科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。
详细学习可前往numpy中文网:https://www.numpy.org.cn/
numpy必拿下
- 创建数组:
- 数组的计算:
- 数组的索引、切片、迭代
创建数组:
可以使用array函数从常规Python列表或元组中创建数组。得到的数组的类型是从Python列表中元素的类型推导出来的。即数组元素类型和Python列表或元组里的元素类型相同 。
(代码的运行结果将会写在注释中)
import numpy as np
#将列表转换为数组
array = np.array([[1,2,3],
[4,5,6]])
print(array)
#[[1 2 3]
# [4 5 6]]
array = np.array(((1,2,3),
(4,5,6)))
print(array)
#[[1 2 3]
# [4 5 6]]
若数组元素未知,但是数组大小已知,NumPy提供了几个函数来创建具有初始占位符内容的数组。
- zeros():可以创建指定长度或者形状的全0数组
- ones():可以创建指定长度或者形状的全1数组
- empty():创建一个数组,其初始内容是随机的,取决于内存的状态
import numpy as np
zeroarray = np.zeros((2,3))
print(zeroarray)
#[[0. 0. 0.]
# [0. 0. 0.]]
onearray = np.ones((3,4))
print(onearray)
#[[1. 1. 1. 1.]
# [1. 1. 1. 1.]
# [1. 1. 1. 1.]]
emptyarray = np.empty((3,4))
print(emptyarray)
# [[1. 1. 1. 1.]
# [1. 1. 1. 1.]
# [1. 1. 1. 1.]]
为了创建数字组成的数组,NumPy提供了一个类似于range的函数,使用方法同类似于range函数
import numpy as np
array = np.arange( 10, 31,5 )
print(array)
#[10 15 20 25 30]
输出数组信息:
import numpy as np
array = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
print(array)
# [[ 1 2 3]
# [ 4 5 6]
# [ 7 8 9]
# [10 11 12]]
#数组维度
print(array.ndim)
#2
#数组形状
print(array.shape)
#(4, 3)
#数组元素个数
print(array.size)
#12
#数组元素类型
print(array.dtype)
#int32
数组的计算:
基础运算:
import numpy as np
arr1 = np.array([[1,2,3],[4,5,6]])
arr2 = np.ones([2,3])
print(arr1 + arr2)
# [[2. 3. 4.]
# [5. 6. 7.]]
print(arr1 - arr2)
# [[0. 1. 2.]
# [3. 4. 5.]]
print(arr1 * arr2)
# [[1. 2. 3.]
# [4. 5. 6.]]
print(arr2 / arr1)
# [[1. 0.5 0.33333333]
# [0.25 0.2 0.16666667]]
print(arr1 ** 2)
# [[ 1 4 9]
# [16 25 36]]
值得注意的是,这里的运算是矩阵对应元素的运算,包括乘以及幂运算。因此如果两个矩阵大小不一,会产生错误。
矩阵乘法
import numpy as np
arr3 = np.array([[1,2,3],[4,5,6]])
arr4 = np.ones([3,2],dtype=np.int64)
print(np.dot(arr3,arr4))
# [[ 6 6]
# [15 15]]
矩阵的转置和flatten(这个中文不太好描述…变平??)
import numpy as np
arr3 = np.array([[1,2,3],[4,5,6]])
arr3_tran = arr3.transpose()
print(arr3)
# [[1 2 3]
# [4 5 6]]
print(arr3_tran)
# [[1 4]
# [2 5]
# [3 6]]
print(arr3.flatten())
# [1 2 3 4 5 6]
数组的索引、切片、迭代
同python其他序列类型一样
import numpy as np
arr5 = np.arange(0,6).reshape([2,3])
print(arr5)
# [[0 1 2]
# [3 4 5]]
print(arr5[1])
#[3 4 5]
print(arr5[1][2])
#5
print(arr5[1,2])
#5
print(arr5[1,:])
#[3 4 5]
print(arr5[:,1])
#[1 4]
print(arr5[1,0:2])
# [3 4]
for i in arr5:
print(i**2)
#[0 1 4]
#[ 9 16 25]
基础操作大概这些,更多内容还是要去Numpy中文网:https://www.numpy.org.cn/
本文如果有错误,或者对内容存在问题,欢迎在评论区交流~