数据分析与挖掘入门——学习笔记(二)numpy的基本使用

这篇博客介绍了numpy的基础使用,包括numpy的快速运算、数组创建、选取元素、数据类型、类型转换、数据类型对象、布尔索引、花式索引等核心概念,详细阐述了numpy在向量运算、数组操作和数据处理方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Numpy的基本使用

1 numpy的运算速度

用python实现的向量相加

def pythonsum(n):
    a = [i for i in range(size)]
    b = [i for i in range(size)]
    c = []
    for i in range(len(a)):
        a[i] = i ** 2
        b[i] = i ** 3
        c.append(a[i] + b[i])
    return c

用numpy实现向量相加

import numpy as np

def numpysum(n):
    a = np.arange(n) ** 2
    b = np.arange(n) ** 3
    c = a + b
    return c

两者的速度对比

import time 
size = 1000
start = time.time()
c = pythonsum(size)
delta = time.time() - start
print("The last 2 elements of the sum", c[-2:])
print("time is", delta)

start = time.time()
c = numpysum(size)
delta = time.time() - start
print("The last 2 elements of the sum", c[-2:])
print("time is", delta)

输出结果:

The last 2 elements of the sum [995007996, 998001000]
time is 0.0009968280792236328
The last 2 elements of the sum [995007996 998001000]
time is 0.0

可见结果是一样的,但是numpy的运算速度远大于python实现的向量

2 numpy数组创建

函数 说明
array 将输入数据(列表、元祖、数组或其他序列类型)转换为ndarray,要么推断出dtype,要么显式指定dtype,默认直接复制输入数据
asarray 将输入转换为ndarray,如果输入本身就是一个ndarray就不进行复制
arange 类似于内置的range,但返回的是一个ndarray而不是列表
ones,ones_like 根据指定的形状和dtype创建一个全1数组,ones_like以了一个数组为参数,并根据其形状和dtype创建一个全1数组
zeros,zeros_like 根据指定的形状和dtype创建一个全0数组,ones_like以了一个数组为参数,并根据其形状和dtype创建一个全0数组
empty,empty_like 创建新数组,只分配内存空间但不填充任何值
eye,identity 创建一个正方的N * N单位矩阵(对角线为1,其余为0)

一维数组创建

a = np.arange(5)
a.dtype  # 查看数组的数据类型
# dtype('int32')
a
# array([0, 1, 2, 3, 4])
a.shape  # 查看数组的维度
# (5,)

创建多维数组

创建一个维度为2,2的数组

m = np.array([np.arange(2), np.arange(2)])
m
# array([[0, 1],
#       [0, 1]])
m.shape
# (2, 2)

m.dtype
# dtype('int32')

创建一个长度为10的全是0的一维数组

np.zeros(10)
# array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

创建一个维度为3,6的全是0的二位数组

np.zeros((3,6))
# array([[ 0.,  0.,  0.,  0.,  0.,  0.],
#        [ 0.,  0.,  0.,  0.,  0.,  0.],
#        [ 0.,  0.,  0.,  0.,  0.,  0.]])

创建一个没有内容的,维度是2,3,2的三维数组

np.empty((2,3,2))
# array([[[ 0.,  0.],
#         [ 0.,  0.],
#         [ 0.,  0.]],
# 
#        [[ 0.,  0.],
#         [ 0.,  0.],
#         [ 0.,  0.]]])

3 选取数组元素

a = np.array([[1,2], [3,4]])  # 创建一个二维数组,内容如括号内
a
# array([[1, 2],
#        [3, 4]])

a[0, 0]  # 选取第一维度第一个元素的第一个元素
# 1
a[0, 1]  # 选取第一维第一个元素第二个元素
# 2
a[1, 0]
# 3
a[1, 1]
# 4

4 numpy的数据类型

数据类型如表所示,如果要创建一个对应类型的数据,只需要np.数据类型(数值/数组)
这里写图片描述

np.float64(42)  # 将42转化为float64类型
# 42.0

np.int8(42.0)  # 转化为整数
# 42

np.bool(42)  # 转化为布尔值
# True

np.bool(0)  # 0的布尔值为False
# False

np.float(True)  # True转化为数值则是对应类型的1
# 1.0

np.float(False)  # False转化为数值则是对应类型的0
# 0.0

np.arange(7, dtype=np.uint16)  # 创建数组的时候可以用dtype参数指定数据类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值