学习笔记2 numpy

本文详细介绍了numpy库,包括ndarray对象的创建、属性、数据类型,以及切片和索引操作,如基本切片和高级索引。文章还涵盖了广播、数组操作如修改形状、翻转和连接,以及统计函数和排序、搜索和计数功能。numpy在数据科学中扮演着重要角色,提供高效处理大量数据的能力。
摘要由CSDN通过智能技术生成

1.什么是numpy

numpy(Numerical Python)提供了python对多维数组对象的支持:ndarray,具有矢量运算能力,快速、节省空间。numpy支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

2.numpy创建数组

2.1 ndarray

numpy中定义的最重要的对象是称为 ndarray 的 N 维数组类型。 它描述相同类型的元素集合。 可以使用基于零的索引访问集合中的项目。

2.2ndarray属性:

ndim属性:表示维度个数
shape属性:表示各维度大小
dtype属性:表示数据类型
ndarray中的每个元素是数据类型对象的对象(称为dtype)。

2.3创建ndarray数组函数

import numpy as np
#生成一维数组
a=np.array([1,2,3])
print(a)          #打印数组
print(a.dtype)    #打印数组类型

输出:
[1 2 3]
int32

#创建二维数组
a2=np.array([[1,2],[3,4]])
print(a2)         #打印数组
print(a2.ndim)    #打印数组的维度
print(a2.shape)   #打印数组各个维度的长度。shape是一个元组

输出:
[[1 2]
[3 4]]
2
(2, 2)

a3=np.zeros(6)  #创建一维长度为6的,元素都是0的一维数组
print(a3)
a4=np.zeros((2,3))  #创建一维长度为2,二维长度为3的二维0数组
print(a4)
a5=np.ones((2,3))   #创建一维长度为2,二维长度为3的二维1数组
print(a5)
a6=np.empty((2,3))  #创建一维长度为2,二维长度为3,未初始化的二维数组
print(a6)

输出:
[0. 0. 0. 0. 0. 0.]
[[0. 0. 0.]
[0. 0. 0.]]
[[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]]

#使用arrange生成连续元素
a7=np.arange(6)
print(a7)
a8=np.arange(0,6,2)
print(a8)

输出:
[0 1 2 3 4 5]
[0 2 4]

3.numpy数据类型

NumPy 数字类型是dtype(数据类型)对象的实例,每个对象具有唯一的特征。 这些类型可以是np.bool_,np.float32等。

数据类型及描述

  1. bool_ 存储为一个字节的布尔值(真或假)
  2. int_ 默认整数,相当于 C 的long,通常为int32或int64
  3. intc 相当于 C 的int,通常为int32或int64
  4. intp 用于索引的整数,相当于 C 的size_t,通常为int32或int64
  5. int8 字节(-128 ~ 127)
  6. int16 16 位整数(-32768 ~ 32767)
  7. int32 32 位整数(-2147483648 ~ 2147483647)
  8. int64 64 位整数(-9223372036854775808 ~ 9223372036854775807)
  9. uint8 8 位无符号整数(0 ~ 255)
  10. uint16 16 位无符号整数(0 ~ 65535)
  11. uint32 32 位无符号整数(0 ~ 4294967295)
  12. uint64 64 位无符号整数(0 ~ 18446744073709551615)
  13. float_ float64的简写
  14. float16 半精度浮点:符号位,5 位指数,10 位尾数
  15. float32 单精度浮点:符号位,8 位指数,23 位尾数
  16. float64 双精度浮点:符号位,11 位指数,52 位尾数
  17. complex_ complex128的简写
  18. complex64 复数,由两个 32 位浮点表示(实部和虚部)
  19. complex128 复数,由两个 64 位浮点表示(实部和虚部)
 
# 使用数组标量类型  
import numpy as np 
dt = np.dtype(np.int32)  
print(dt)

输出:int32

#int8,int16,int32,int64 可替换为等价的字符串 'i1','i2','i4',以及其他。  
import numpy as np 
dt = np.dtype('i4')  
print(dt)

输出:int32

#使用astype复制数组,并转换类型
x=np.array([1,2,3],dtype=np.float64)
y=x.astype(np.int32)
print(x)
print(y)

输出:
[1. 2. 3.]
[1 2 3]

#将字符串元素转换为数组元素
x=np.array(['1','2','3'],dtype=np.string_)
y=x.astype(np.int32)
print(x)
print(y)

输出:
[b’1’ b’2’ b’3’]
[1 2 3]

4.切片和索引

ndarray对象中的元素遵循基于零的索引。 有三种可用的索引方法类型: 字段访问,基本切片和高级索引。

基本切片是 Python 中基本切片概念到 n 维的扩展。 通过将start,stop和step参数提供给内置的slice函数来构造一个 Python slice对象。 此slice对象被传递给数组来提取数组的一部分。

4.1基本切片

import numpy as np
a = np.arange(10)
s = slice(2,7,2)  #由冒号分隔的切片参数(start:stop:step)直接提供给ndarray对象,也可以获得相同的结果。
print(a[s])

输出:[2 4 6]

# 对单个元素进行切片  
import numpy as np 
a = np.arange(10)
b = a[5]   #只输入一个参数 
print(b)

输出:5

上述也适用于多维ndarray

“…”使选择的长度与数组的维度相同;
如果在行位置使用省略号,它将返回包含行中元素的ndarray。

# 最开始的数组  
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
print('我们的数组是:')  
print(a)
print('\n')  
# 这会返回第二列元素的数组:  
print('第二列的元素是:')  
print(a[...,1])    
print('\n')  
# 现在我们从第二行切片所有元素:  
print('第二行的元素是:')  
print(a[1,...])
print('\n')  
# 现在我们从第二列向后切片所有元素:
print('第二列及其剩余元素是:') 
print(a[...,1:])

输出:
我们的数组是:
[[1 2 3]
[3 4 5]
[4 5 6]]

第二列的元素是:
[2 4 5]

第二行的元素是:
[3 4 5]

第二列及其剩余元素是:
[[2 3]
[4 5]
[5 6]]

x=np.array([[1,2],[3,4],[5,6]])
print(x[:2,:1])
print("*********")
x[:2,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值