[Python] NumPy 使用 - 百年刘傲天

in Python with 0 comment

[Python]使用NumPy

导入模板

import numpy as np

创建一维数组

>>>np.arange(n)

创建一个数组有n和元素分别是0到n-1。
例子

>>>np.arange(3)
array([0, 1, 2])
>>>np.arange(3.0)
array([0., 1., 2.])
>>>np.arange(3, 7)
array([3, 4, 5, 6])
>>>np.arange(3, 7, 2)
array([3, 5])

查看数组里元素的数据类型和维度

>>>n = np.arange(5)
>>>n.dtype
dtype('int32')
>>>n.shape
(5,)

在我的电脑上默认是int32位的类型,在你的电脑上可能不同,shape是查看数组维度的,这里因为只有五个元素,所以维度是(5,)表达维度的是一个元组

创建多维数组

>>>n = np.array([np.arange(2), np.arange(2)])
array([[0, 1],
       [0, 1]])
>>>n.shape
(2,2)

查看维度,可以看出这是一个两行两列的多维数组,array接受一个元素为一维数组的列表

数据类型

bool               布尔类型
inti               由所在平台决定精度的整数(int32或int64)
int8               整数,范围为-128至127
int16              整数,范围为-32768至32767
int32              整数,范围为-2的31次方至2的31次方-1
int64              整数,范围为-2的63次方至2的63次方-1
uint8              无符号整数,范围0-255
uint16             无符号整数,范围0-65535
uint32             无符号整数,范围0-2的32次方-1
uint64             无符号整数,范围0-2的64次方-1
float16            半精度浮点数(16位):其中用1位表示正负号,5位表示指数,10位表示尾数
float32            半精度浮点数(32位):其中用1位表示正负号,8位表示指数,23位表示尾数
float64或float     半精度浮点数(64位):其中用1位表示正负号,11位表示指数,52位表示尾数
complex64          复数,分别用两个32浮点数表示实部和虚部
complex128或complex复数,分别用两个64位浮点数表示实部和虚部

在创建数组的时候可以指定数据类型,比如:

>>>n = arange(3, dtype=uint16)
EEy([0, 1, 2, 3, 4, 5, 6], dtype=uint16)
>>>n.dtype.itemsize
2

这里的2是数据类型所占字节数
NumPy可以使用字符编码来表示数据类型,但是通常不这么使用,但是也可以了解一下

整数           i
无符号整数     u
单精度浮点数   f
双精度浮点数   d
布尔值        b
复数           d
字符串         S
unicode字符串  U
void(空)      V

查看数据类型的字符编码

>>>t = dtype("Float64")
>>>t.char
'd'

dtype类的属性

>>>t = type('Float64')
>>>t.char
'd'

type属性对应于数组元素的数据类型

>>>t.type
<type 'numpy.float64'>

str属性可以给出数据类型的字符串表示,该字符串的首个字符表示字节序,后边还有字符的话就是字符编码,接着是一个数字表示每个元素存储所需的字节数

>>>t.str
'<f8'

索引

索引和使用Python普通数组一毛一样

多维数组的切片和索引

改变一个数组的维度

>>>b = arange(24).reshape(2, 3, 4)
有几个参数就分为几维数组

未完待续

Responses