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

大体上介绍一下这个包。

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)

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)

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)

   

      ndim: 维度数

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

     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)

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,读取所有数据

 

猜你喜欢

转载自blog.csdn.net/zhouchen1998/article/details/82145688