Numpy 的简单使用(一)

一.环境

本人使用的是Anaconda,免费的 Python 发行版,用于进行大规模数据处理、预测分析,和科学计算,致力于简化包的管理和部署。支持 Linux, Windows 和 Mac 系统。

二.ndarray对象

组成部分:

一个指向数据(内存或内存映射文件中的一块数据)的指针。

数据类型或 dtype,描述在数组中的固定大小值的格子。

一个表示数组形状(shape)的元组,表示各维度大小的元组。

一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。

三.numpy.array()函数

格式:numpy.array(object,dtype,copy,order,subok,ndmin)

object数组或嵌套的数列
dtype数组元素的数据类型,可选
copy对象是否需要复制,可选
order创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
subok默认返回一个与基类类型一致的数组
ndmin指定生成数组的最小维度

四.array()函数代码举例

import numpy as np
a = np.array([1,2,3])#一维数组
print(a)

b = np.array([[1,2],[3,4]])#二维数组
print(b)

import numpy as np 或import numpy 

这两种都需要在函数前加.

from numpy import *

不需要添加前缀

相同:两者都是导入numpy库的函数,变量,对象等

import numpy as np
a = np.array([[1,2,3],[4,5,6],[1,2,3]],ndmin = 4)#最小维度
print(a)


[[[[1 2 3]
   [4 5 6]
   [1 2 3]]]]

dtype的值可以是很多:

bool_布尔型数据类型(True 或者 False)
int_默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
intc与 C 的 int 类型一样,一般是 int32 或 int 64
intp用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
int8字节(-128 to 127)
int16整数(-32768 to 32767)
int32整数(-2147483648 to 2147483647)
int64整数(-9223372036854775808 to 9223372036854775807)
uint8无符号整数(0 to 255)
uint16无符号整数(0 to 65535)
uint32无符号整数(0 to 4294967295)
uint64无符号整数(0 to 18446744073709551615)
float_float64 类型的简写
float16半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
float32单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
float64双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
complex_complex128 类型的简写,即 128 位复数
complex64复数,表示双 32 位浮点数(实数部分和虚数部分)
complex128复数,表示双 64 位浮点数(实数部分和虚数部分)

五.numpy.dtype()函数

格式:numpy.dtype(object,align,copy)

dtype()代码举例

import numpy as np
a = np.dtype(np.int64)
print(a)


int64

创建数据类型代码举例

import numpy as np

dt = np.dtype([('age',np.int8)]) 
a = np.array([(10,),(20,),(30,)]) 
print(a)
a = np.array([(10),(20),(30)])
print(a)
a = np.array([(10,),(20),(30)],dtype = dt)
print(a)

[[10]
 [20]
 [30]]
[10 20 30]
[(10,) (20,) (30,)]

六.array的属性

也就是用一些函数求一些数组自身的特征,比如数组的维数,数组的大小。

ndim()用于求数组维数

import numpy as np
a = np.arange(24)
print(a.ndim)
a = a.reshape(2,4,3)
print(a.ndim)


1
3

shape()函数用于求数组的行列数或改变行列数

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

(2, 2)
[[2 3 4 5]]
(1, 4)

reshape()也可用于调整数组行列数

itemsize()可以返回元素大小

import numpy as np
a = np.array([1,2,3],dtype =float)
print(a.itemsize)

8

flags()返回内存使用情况

import numpy as np
a = np.array([1,2,3],dtype =float)
print(a.flags)

 C_CONTIGUOUS : True
  F_CONTIGUOUS : True
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False
属性描述
C_CONTIGUOUS (C)数据是在一个单一的C风格的连续段中
F_CONTIGUOUS (F)数据是在一个单一的Fortran风格的连续段中
OWNDATA (O)数组拥有它所使用的内存或从另一个对象中借用它
WRITEABLE (W)数据区域可以被写入,将该值设置为 False,则数据为只读
ALIGNED (A)数据和所有元素都适当地对齐到硬件上
UPDATEIFCOPY (U)这个数组是其它数组的一个副本,当这个数组被释放时,原数组的内容将被更新

含义如上

七.快速创建数组的函数

empty()方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组

格式如下:numpy.empty(shape, dtype = float, order = 'C')

import numpy as np
a = np.empty([2,3],dtype = float)
print(a)

[[0. 0. 0.]
 [0. 0. 0.]]

zeros()全零矩阵

import numpy as np
a = np.zeros((2,3),dtype = int)
print(a)
b = np.zeros(5)
print(b)

[[0 0 0]
 [0 0 0]]
[0. 0. 0. 0. 0.]

ones()全1矩阵

import numpy as np
a = np.ones((2,3),dtype = int)
print(a)
b = np.ones(5)
print(b)

[[1 1 1]
 [1 1 1]]
[1. 1. 1. 1. 1.]

八.从已有数组创建数组

asarray()函数可以将列表、元组、等转化为矩阵数组

import numpy as np
a = [(1,2,3),(2,3,4)]
s = np.asarray(a)
print(s)

[[1 2 3]
 [2 3 4]]

frombuffer实现动态数组

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

参数描述
buffer可以是任意对象,会以流的形式读入。
dtype返回数组的数据类型,可选
count读取的数据数量,默认为-1,读取所有数据。
offset读取的起始位置,默认为0。
import numpy as np
a  = b'hello cat'
s  = np.frombuffer(a,dtype='S1')
print(s)

[b'h' b'e' b'l' b'l' b'o' b' ' b'c' b'a' b't']

   至于为什么要加b,希望评论区能给一个好的解释。

fromiter()方法从可迭代对象中建立 ndarray 对象,返回一维数组

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

import numpy as np
list = range(5)
it  = iter(list)
x = np.fromiter(it,dtype = int)
print(x)


[0 1 2 3 4]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝本生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值