今天花了一天的时间学习了python的numpy模块,顺便记录一下学习过程,如有不当的地方,还望读者留言,共同学习。
一:导入numpy模块
import numpy as np
二:通过array()创建numpy数组
# 使用array()创建一维数组
arr = np.array([1,3,5,7])
print(arr) # [1 3 5 7]
# 这里和其他参考资料有所出入
# 这是源码的注释 If not given, then the type will be determined as the minimum type required
print(arr.dtype) # int32
三:通过arange()创建数组
# 此写法需要指定步长
arr = np.arange(2,10,2,np.float32)
print(arr) # [ 2. 4. 6. 8.]
print(arr.dtype) # float32
arr2 = np.arange(2,3,0.1)
print(arr2) # [ 2. 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9]
print(arr2.dtype) # float64
四:矩阵的计算
# 随机生成0到1的2行3列的矩阵
# a = np.random.random((2,3))
a = np.arange(9).reshape((3,3))
print(a)
print("矩阵的最小值", a.min()) # np.sum(a,axis=0)
print("矩阵的最大值", a.max())
print("矩阵的和", a.sum())
print("矩阵的每一行最小值", a.min(axis=1)) # axis=1 表示求每一行的最小值,返回<class 'numpy.ndarray'>
# print(type(a.min(axis=1)))
print("矩阵的每一列最大值", a.max(axis=0)) # axis=0 表示每一列的最大值
print("矩阵的每一行和", a.sum(axis=1)) # 求每一行的和
print("矩阵的每一列和", a.sum(axis=0)) # 求每一列的和
print("矩阵最小值的索引", np.argmin(a))
print("矩阵最大值的索引", np.argmax(a))
print("矩阵的平均值", np.mean(a)) # np.average(a)
print("矩阵的中位数", np.median(a))
print("矩阵的数逐个相加", np.cumsum(a))
print("矩阵的数逐个相减", np.diff(a))
# (array([0, 0, 1, 1, 1, 2, 2, 2], dtype=int64), array([1, 2, 0, 1, 2, 0, 1, 2], dtype=int64))
# 第一个array表示行, 第二个array表示列
print("矩阵中非0的数",np.nonzero(a))
print("矩阵排序",np.sort(a))
# 表示把 矩阵a中小于2的值全部赋值为2,大于4的全部赋值为4
print("矩阵截取",np.clip(a,2,4))
五:矩阵合并
a = np.array([1,2,3,4])
b = np.array([5,6,7,8])
# 矩阵上下合并
c = np.vstack((a,b))
"""
[[1 2 3 4]
[5 6 7 8]]
<class 'numpy.ndarray'>
(2, 4)
"""
# print(c)
# print(type(c))
# print(c.shape)
# 矩阵横向合并
d = np.hstack((a,b))
"""
[1 2 3 4 5 6 7 8]
<class 'numpy.ndarray'>
(8,)
"""
# print(d)
# print(type(d))
# print(d.shape)
print(a.shape)
# 在行上加一个维度
e = a[np.newaxis,:]
print(e)
print(e.shape) # (1, 4)
# 在列上加一个维度
f = a[:,np.newaxis]
print(f)
print(f.shape) # (4, 1)
六:矩阵切分
a = np.arange(12).reshape((3,4))
print(a)
# 默认 axis=0 按行分,
# 注意只能平均切分
"""
[array([[0, 1],
[4, 5],
[8, 9]]),
array([[ 2, 3],
[ 6, 7],
[10, 11]])]
"""
print(np.split(a,2,axis=1)) #np.vsplit(a,2)
# 不平均切分
"""
[array([[0, 1],
[4, 5],
[8, 9]]),
array([[ 2],
[ 6],
[10]]),
array([[ 3],
[ 7],
[11]])]
"""
print(np.array_split(a,3,axis=1)) #np.hsplit(a,2)
七:由于初次接触numpy学习比较浅显,小编会在今后的深入学习中再进行补充,不喜勿喷