欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python高级语法-你了解numpy吗(numpy基础)

程序员文章站 2022-05-28 19:38:58
...

大体上介绍一下这个包。

1.简介

NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。

2.安装

python官方版本,可以通过pip或者源码安装

推荐使用anaconda,这是发行版的python,内含了numpy等重要第三方库。

anaconda安装使用见https://blog.csdn.net/zhouchen1998/article/details/81382006

3.创建ndarray对象

这是这个模块最核心的对象,表示一个n维数组,它是相同类型的数据集合。

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

其中,

object  任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。

dtype  数组的所需数据类型,可选。

copy  可选,默认为true,对象是否被复制。

order  C(按行)、F(按列)或A(任意,默认)。

subok  默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。

ndimin 指定返回数组的最小维数。

import numpy as np

# 一维
a = np.array([1, 2, 3])
print(a)
# n维
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b)
# 带数据类型设置
c = np.array([1, 2, 3], dtype=complex)
print(c)
# 带最小维度设置
d = np.array([[1, 2, 3], [4, 5, 6]], ndmin=3)
print(d)

python高级语法-你了解numpy吗(numpy基础)

4.dtype的使用

首先,numpy提供了比python更加丰富的标量数据类型。

numpy.dtype(object, align, copy)

其中,

Object:被转换为数据类型的对象。

Align:如果为true,则向字段添加间隔,使其类似 C 的结构体。

Copy: 生成dtype对象的新副本,如果为flase,结果是内建数据类型对象的引用。

import numpy as np
# 内置转换
dt1 = np.dtype(np.int32)
print(dt1)
# 简略写法
dt2 = np.dtype('i4')
print(dt2)
# 结构化数据
dt3 = np.dtype([('year', np.int16)])
print(dt3)
a = np.array([(1998, ), (2000, ), (2012, )], dtype=dt3)
print(a)
# 结构化数据的字段访问
print(a['year'])
# 完整的结构示例,类似C语言结构体
date = np.dtype([('year', np.int32), ('month', np.int8), ('day', np.int8)])
b = np.array([(1998, 5, 26), (2000, 5, 26), (2014, 5, 26)])
print(b)

python高级语法-你了解numpy吗(numpy基础)

5.ndarray属性

    shape:包含数组维度的元组

a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
print(a.shape)

# a.shape = (3, 2)
# print(a)
# 等价于下面
c = a.reshape(3, 2)
print(c)

   python高级语法-你了解numpy吗(numpy基础)

      ndim: 维度数

a = np.arange(24)
print(a.ndim)
b = a.reshape(2, 4, 3)
print(b.ndim)

python高级语法-你了解numpy吗(numpy基础)

     itemsize:每个元素占字节数

     flags:数组的几个状态

6.特殊数组的创建

 

numpy.empty(shape, dtype = float, order = 'C')  没有初值但是分配空间的数组

numpy.zeros(shape, dtype = float, order = 'C')   初值全为0的数组

numpy.ones(shape, dtype = None, order = 'C')   初值全为1的数组

其中,

shape是形状,如(2,2)表示二行二列

dtype表示数据类型

order表示组织风格

其余数值类型数组如arange不细说

import numpy as np
a = np.empty((2, 2), dtype=np.int8, order='C')
print(a)
b = np.zeros((2, 2), dtype=np.int8, order='C')
print(b)
c = np.ones((2, 2), dtype=np.int8, order='C')
print(c)

python高级语法-你了解numpy吗(numpy基础)

7.从python内置数据类型转换为numpy的数组

asarray

numpy.asarray(a, dtype = None, order = None)

其中,

a 任意形式的输入参数,比如列表、列表的元组、元组、元组的元组、元组的列表

dtype,order 不再说明

import numpy as np
# 列表
x = [1, 2, 3]
a = np.asarray(x)
print(a)
# 元组
a = np.asarray(x)
print(a)
# 元组列表
x = [(1, 2, 3), (4, 5)] 
a = np.asarray(x)  
print(a)

frombuffer

numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)

其中,

buffer 任何暴露缓冲区接口的对象

dtype 同上

count 需要读取的数据数量,默认为-1,读取所有数据

offset 需要读取的起始位置,默认为0

fromiter

numpy.fromiter(iterable, dtype, count = -1)

其中,

iterable 任何可迭代对象

dtype 返回数组的数据类型

count 需要读取的数据数量,默认为-1,读取所有数据

 

 

 

相关标签: numpy