Python 科学计算库 NumPy 学习笔记 - 1 - Nu
2020-09-11 本文已影响0人
游文影月志
电梯直达:
Python 科学计算库 NumPy 学习笔记 - 1
Python 科学计算库 NumPy 学习笔记 - 2
Python 科学计算库 NumPy 学习笔记 - 3
Python 科学计算库 NumPy 学习笔记 - 4
Python 科学计算库 NumPy 学习笔记 - 5
Python 科学计算库 NumPy 学习笔记 - 6
Python 科学计算库 NumPy 学习笔记 - 7
Python 科学计算库 NumPy 学习笔记 - 8
1. NumPy
的安装和引入
pip install numpy
import numpy as np
np.__version__
'1.19.0'
2. Python 中的数据类型
Python 是一种动态类型语言。因此,Python 变量不仅仅是一个简单的值,它们还包含关于数据类型等额外信息。
Python 列表中的每个项都必须包含自己的类型信息、引用计数和其他信息,如果列表的所有元素都是同一类型,那这些重复的信息就是冗余的。这种情况,将数据存储在固定类型数组中会更好。
在 Python 种,可以通过下面这种方式创建固定类型数组:
import array
a = list(range(5))
A = array.array('i', a)
A
array('i', [0, 1, 2, 3, 4])
其中,i
表示列表中每一个元素的数据类型都是整数,即 integers。
3. NumPy
利用 Python 列表创建数组
import numpy as np
np.array([1, 2, 3])
array([1, 2, 3])
如果数据类型不同,NumPy
将会尝试转换为统一的数据类型。
np.array([1.1, 2, 3])
array([1.1, 2. , 3. ])
也可以使用 dtype
参数指定数据类型:
np.array([1.9, 2, 3], dtype='int')
array([1, 2, 3])
利用列表初始化多维数组:
np.array([range(i, i+5) for i in [1, 2, 3]])
array([[1, 2, 3, 4, 5],
[2, 3, 4, 5, 6],
[3, 4, 5, 6, 7]])
4. NumPy
从零开始创建数组
创建一个用 0
填充的,长度为 5 的整数数组:
np.zeros(5, dtype='int')
array([0, 0, 0, 0, 0])
创建一个由6个值组成的数组,这些值在0和1之间均匀分布:
np.linspace(0, 1, 6)
array([0. , 0.2, 0.4, 0.6, 0.8, 1. ])
用大于等于 0 且小于 10 的数字创建一个 3x3 的矩阵:
np.random.randint(0, 10, (3, 3))
array([[6, 3, 4],
[6, 5, 2],
[2, 7, 9]])
5. NumPy
标准数据类型
数据类型 | 描述 |
---|---|
bool_ | 布尔值 (True or False) ,以字节形式存储 |
int_ | 默认整数类型,与 C 语言的 long 相同,通常为 int64 或 int32 |
intc | 与 C 语言的 int 相同(通常为int32或int64) |
intp | Integer used for indexing (same as C ssize_t; normally either int32 or int64) |
int8 | Byte (-128 to 127) |
int16 | Integer (-32768 to 32767) |
int32 | Integer (-2147483648 to 2147483647) |
int64 | Integer (-9223372036854775808 to 9223372036854775807) |
uint8 | Unsigned integer (0 to 255) |
uint16 | Unsigned integer (0 to 65535) |
uint32 | Unsigned integer (0 to 4294967295) |
uint64 | Unsigned integer (0 to 18446744073709551615) |
float_ | Shorthand for float64. |
float16 | Half precision float: sign bit, 5 bits exponent, 10 bits mantissa |
float32 | Single precision float: sign bit, 8 bits exponent, 23 bits mantissa |
float64 | Double precision float: sign bit, 11 bits exponent, 52 bits mantissa |
complex_ | Shorthand for complex128. |
complex64 | Complex number, represented by two 32-bit floats |
complex128 | Complex number, represented by two 64-bit floats |
6. NumPy
数组的属性
- ndim : 数组的维度
- shape : 数组每个维度的大小
- size : 数组的总大小. 每个维度的大小的乘积.
- dtype : 元素类型
- itemsize : 元素字节大小
- nbytes : 数组总字节大小. 一般可认为 itemsize * size
x = np.random.randint(10, size=(2, 4, 6))
print(x)
print(x.ndim)
print(x.shape)
print(x.size)
print(x.dtype)
print(x.itemsize)
print(x.nbytes)
[[[9 3 0 2 1 8]
[8 2 5 7 2 4]
[8 3 8 8 5 3]
[1 9 2 7 8 1]]
[[2 2 5 9 5 1]
[9 1 4 0 0 2]
[1 8 2 6 4 4]
[4 3 1 8 0 2]]]
3
(2, 4, 6)
48
int32
4
192
7. NumPy
数组的索引值
x[1, 3, 5]
2
x[1, 3, 5] = 3
x
array([[[9, 3, 0, 2, 1, 8],
[8, 2, 5, 7, 2, 4],
[8, 3, 8, 8, 5, 3],
[1, 9, 2, 7, 8, 1]],
[[2, 2, 5, 9, 5, 1],
[9, 1, 4, 0, 0, 2],
[1, 8, 2, 6, 4, 4],
[4, 3, 1, 8, 0, 3]]])