numpy的常用方法

进行操作前首先导入numpy模块

import numpy as np

  1. 获取最大值和最小值的位置;
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))

在这里插入图片描述

  1. 创建一个全为0的数组;
print(np.zeros((3, 3), dtype=np.int))

在这里插入图片描述

  1. 创建一个全为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]])
  1. 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))
  1. 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))

猜你喜欢

转载自blog.csdn.net/weixin_42213622/article/details/87926530