【Python】Numpy 笔记 2
numpy-data
简单的数组表达式¶
In [2]:
import numpy as np
In [3]:
# meshgrid 方法 输入两个一维数组,输出两个互为转置矩阵的二维数组
narr = np.arange(5)
print(np.meshgrid(narr, narr))
In [5]:
points = np.arange(-5, 5, 0.01)
x, y = np.meshgrid(points, points)
print(x)
print(y)
print("******************************")
z = np.sqrt(x ** 2 + y ** 2)
print(z)
In [9]:
import matplotlib.pyplot as plt
%matplotlib inline
plt.imshow(z, cmap=plt.cm.gray)
plt.colorbar()
plt.title(" $\sqrt{x^2 + y^2}$")
Out[9]:
将条件逻辑表述为数组运算¶
In [14]:
x = np.array([1, 2, 3, 4, 5])
y = np.array([6, 7, 8, 9, 10])
con = np.array([True, False, True, False, True])
res = [(x if c else y) for (x, y, c) in zip(x, y, con)]
print(res)
In [15]:
# 使用 where
res = np.where(con, x, y)
print(res)
In [17]:
# 使用 where 做数据处理,将 数组中所有大于 0 的值替换为 1, 小于 0 的值替换为 -1
arr = np.random.randn(4, 3)
print(arr)
res = np.where(arr > 0, 1, -1)
print(res)
基本数学统计值¶
In [20]:
arr = np.arange(20).reshape(4, 5)
print(arr)
# sum 求和
print(arr.sum())
print(np.sum(arr))
# mean 平均值
print(arr.mean())
# std 标准差
print(arr.std())
In [22]:
# 按列求
print(arr.sum(axis=0))
print(arr.mean(axis=0))
print(arr.std(axis=0))
# 按行求
print(arr.sum(axis=1))
print(arr.mean(axis=1))
print(arr.std(axis=1))
In [29]:
x = np.array([1, 2, 3, 4, 5])
print(x.cumsum()) # 累积和
print(x.cumprod()) # 累积积
In [32]:
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr.cumsum(axis=0))
print(arr.cumprod(axis=0))
Bool类型的数组在计算统计值时会被转换成 0(False) 和 1 (True), 可以使用 sum 统计数量¶
In [35]:
arr = np.array([True, False, True, False, True, True])
print((arr == 0).sum())
print((arr == 1).sum())
any() 表示 bool 数组中是否存在 True, all() 表示 bool 数组中是否都为 True¶
In [36]:
print(arr.any())
print(arr.all())
Numpy 排序¶
numpy.sort(a, axis, kind, order)¶
集合函数¶
In [40]:
arr = np.array([[2, 3, 1, 4], [7, 3, 6, 2], [1, 6, 2, 8]])
arr.sort()
print(arr)
arr = np.array([[2, 3, 1, 4], [7, 3, 6, 2], [1, 6, 2, 8]])
arr.sort(axis=0, kind='mergesort')
print(arr)
In [45]:
# argsort 输出元素在指定轴上的大小顺序
arr = np.array([[2, 3, 1, 4], [7, 3, 6, 2], [1, 6, 2, 8]])
res = arr.argsort()
print(arr)
print("*****************")
print(res)
In [47]:
# unique 去重
arr = np.array(['a', 'b', 'c', 'a', 'b', 'a'])
print(np.unique(arr))
In [48]:
# in1d 查找
print(np.in1d(arr, ['a', 'c', 'e']))
In [49]:
# load、save支持对文件的读写
矩阵运算¶
随机数生成¶
In [ ]:
欢迎访问我的个人博客站点:
https://yeyeck.com