进行操作前首先导入numpy模块
import numpy as np
- 获取最大值和最小值的位置;
data = np.arange(12).reshape((3, 4))
data[0, 0] = 80
print(data)
# 1. 获取最大值和最小值的位置;
# 获取当前数组里面最大值的索引;
max_item1 = np.argmax(data)
print(max_item1)
# 获取每一列的最大值对应的索引;
print(np.argmax(data, axis=0))
# 获取每一行的最大值对应的索引;
print(np.argmax(data, axis=1))
- 创建一个全为0的数组;
print(np.zeros((3, 3), dtype=np.int))
- 创建一个全为1的数组;
print(np.ones((3, 4)))
4. 创建一个对角线全为1的正方形数组(方阵)
print(np.eye(3))
5. numpy的深拷贝和浅拷贝
-
列表的深拷贝和浅拷贝
- 浅拷贝: a= b[::] a = copy.copy(b)
- 深拷贝: a = copy.deepcopy(b)
-
numpy中的拷贝
- data1 = data: 完全不复制, 两个变量相互影响, 指向同一块内存空间;
- data2 = data[::], 会创建新的对象data2,
但是data的数据完全由data2保管, 两个的数据变化是一致的; - data3 = data.copy(), 深拷贝, 两个变量不湖影响;
import numpy as np
data = np.arange(8).reshape(2,4)
data
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
data1 = data
id(data)
140444611238448
id(data1)
140444611238448
data2 = data[::]
id(data)
140444611238448
id(data2)
140444621241360
id(data[0])
140444621241200
id(data2[0])
140444620515568
data
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
data2
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
np.where(data2<4,4,10)
array([[ 4, 4, 4, 4],
[10, 10, 10, 10]])
data2
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
data2[0] = 0
data2
array([[0, 0, 0, 0],
[4, 5, 6, 7]])
data
array([[0, 0, 0, 0],
[4, 5, 6, 7]])
data3 = data.copy()
data
array([[0, 0, 0, 0],
[4, 5, 6, 7]])
data3
array([[0, 0, 0, 0],
[4, 5, 6, 7]])
data3[0] = 10
data3
array([[10, 10, 10, 10],
[ 4, 5, 6, 7]])
data
array([[0, 0, 0, 0],
[4, 5, 6, 7]])
- numpy中的nan和inf
-
nan(not a number): 表示不是一个数字, 代表的是数据缺失
-
inf(infinity): inf代表正无穷, -inf代表负无穷
-
nan的特殊属性:
- 两个nan的值是不相等的, 是float类型:
>>> np.nan == np.nan
False
>>> np.nan != np.nan
True
- 如何判断有多少个缺失值:
data = np.arange(12, dtype=np.float).reshape(3, 4)
data
array([[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.]])
data[:2, 2] = np.nan
data
array([[ 0., 1., nan, 3.],
[ 4., 5., nan, 7.],
[ 8., 9., 10., 11.]])
np.count_nonzero(data!=data)
2
data!=data
array([[False, False, True, False],
[False, False, True, False],
[False, False, False, False]])
- 判断data里面的缺失值
np.isnan(data)
array([[False, False, True, False],
[False, False, True, False],
[False, False, False, False]])
np.count_nonzero(np.isnan(data))
- numpy的常用统计方法
- 求和
import numpy as np
data = np.arange(12, dtype=np.float).reshape(3, 4)
print(data.sum())
# 每一列数据的和;
print(data.sum(axis=0))
# 每一行数据的和;
print(data.sum(axis=1))
- 均值
# - 均值
print(data.mean())
print(data.mean(axis=0))
print(data.mean(axis=1))
- 中值
# - 中值
print(data)
print(np.median(data))
print(np.median(data, axis=0))
print(np.median(data, axis=1))
- 最大值
# - 最大值
print(data.max())
print(data.max(axis=0))
print(data.max(axis=1))
- 最小值
- 极差
# - 最小值
# - 极差
print(np.ptp(data))
print(np.ptp(data, axis=0))
print(np.ptp(data, axis=1))
- 标准差: 代表的是数据的波动稳定情况, 数字越大, 越不稳定;
# - 标准差: 代表的是数据的波动稳定情况, 数字越大, 越不稳定;
print(data.std())
print(data.std(axis=0))
print(data.std(axis=1))