首页 > 技术文章 > numpy的学习

juncaoit 2022-05-09 22:20 原文

  numpy的学习,可以不需要使用Anaconda,不过为了测试jupter notebook,这里也进行一下安装。后面的程序,还是写在pycharm中。

 

一:简介

1.说明

  python的扩展库,支持高效的多数组与矩阵计算,也提供了大量的数学函数库。

  科学计算比较高效。

 

2.打开jupyter notebook

 

 

二:基础ndarray

1.说明

  numpy最重要的就是N维数组对象,该对象是一个快速灵活的大数据集合容器。

  构造函数

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

 

2.创建程序

import numpy as np

## 将python中的list转换成ndarray
a = [1,2,3,4,5]
print(type(1))

A = np.array(a)
print(A)
print(type(A))

## 直接生成ndarray
b = np.array([2,3,4])
print(type(b))

c = np.array([[1,2,3],[4,5,6]])
print(c)
print(type(c))
print(c.ndim)  # 几维度

## 指定维度创建ndarray,指定dtype
d = np.array([1,2,3,4,5], ndmin = 3, dtype=np.float32)
print(d)

 

3.数据类型说明

  numpy支持比python更多的数据类型

  语法构造函数:

numpy.dtype(object, align, copy)
  • object - 要转换为的数据类型对象
  • align - 如果为 true,填充字段使其类似 C 的结构体。
  • copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用

 

  记忆:

  

 

 

4.数据类型的程序

import numpy as np

#
dt = np.dtype(np.int32)
print(dt)

## 使用 int
a = np.array([1,2,3], dtype=dt)
print(a)


dt_f = np.dtype(np.float32)
b = np.array([1,2,3], dt_f)
print(b)

dt_c = np.dtype(complex)
c = np.array([1,2,3], dt_c)
print(c)

## 自定义结构化类型
# [(10,) (20,) (30,)]
dt_struct = np.dtype([("age", np.int32)])
d = np.array([(10), (20), (30)], dt_struct)
print(d)
# [10 20 30]
print(d['age'])

# dtype创建自定义实体对象类型
# [(b'tom', 10) (b'andy', 20)]
# [b'tom' b'andy']
dt_object = np.dtype([("name", "S20"), ("age", np.int32)])
e = np.array([('tom', 10), ('andy', 20)], dt_object)
print(e)
print(e['name'])

 

5.数组属性

  ndarray.shape

  ndarray.ndim

  ndarray.itemsize

 

6.程序

import numpy as np

## shape
# 返回数组的形状
# (2, 4)
a =np.array([[1,2,3,4],[5,6,7,8]])
print(a.shape)

# 通过shape改变数组形状
a.shape = (4,2)
print(a)

## ndim
# 得到维度
# 1
b = np.array([1,2,3,6])
print(b.ndim)

## itemsize
# 每个元素的单位字节长度
# 8
c = np.array([3,4,5,6], dtype=np.int64)
print(c.itemsize)

## PS
## 通过reshape()改变形状
f = b.reshape(2,2)
print(f)

 

7.基础数组创建

  empty()

  ones()

  ones_like()

  zeros()

  zeros_like()

  eye()

 

  asarray()

  arange()

  linspace

 

8.程序

import numpy as np

# 随机创建函数
a = np.empty([3,2], dtype=np.int8)
print(a)

# 0进行填充函数
b = np.zeros([3,2], dtype=np.int8)
print(b)

# 形状相同的,0进行填充
c = np.array([1,2,3,4], dtype=np.int8)
d = np.zeros_like(c)
print(d)

# 1进行填充
e = np.ones([3,2], dtype=np.int8)
print(e)

# 对角线为1
f = np.eye(5)
print(f)

###
#asarray,把python中的list或tuple转成adarray
aa = [1,2,3,4]
bb = np.asarray(aa)
print(bb)

cc = (1,2,3,4)
dd = np.asarray(cc)
print(dd)

# arange, 返回给定范围的数组。前包,后不包
ee = np.arange(1, 20, 2, dtype = np.float32)
print(ee)

ff = np.arange(10)
print(ff)

# linspace, 返回指定均匀间隔。前包后包
gg = np.linspace(10, 20, 6)
print(gg)

 

 

 三:进阶

 1.切片与索引

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

推荐阅读