Numpy
Python库,用于数组快速操作的各种API
- 支持常见的数组和矩阵操作
- ndarray处理多维数组
安装Numpy
- 检查PyCharm的Python运行环境
- File–>Settings–>Project–>Python Interpreter
- 检查Python Interpreter环境,例如base
- 点击Anaconda Prompt
- 切换运行环境到PyCharm设置的运行环境
- 默认是在base环境,无需切换环境
- 可输入命令行
conda env list
检查当前环境 - 输入命令行
conda activate 环境名
切换运行环境
- 输入以下命令行安装numpy
pip install numpy==1.21.6 -i https://mirrors.aliyun.com/pypi/simple/
numpy==1.21.6 需要 Requires-Python >=3.7,❤️.11
- 安装成功后,可输入命令行
pip list
检查安装包
N维数组-ndarray
内存分配
- ndarray存储数据,数据与数据的地址是连续的,操作更快
- python原生列表是通过寻址查询元素
效率对比
"""
原生数组与numpy数组操作效率对比
"""
import time
import numpy as np
a = [num for num in range(10000000)]
t1 = time.time()
sum_a = sum(a)
t2 = time.time()
print(t2 - t1)
# 4.231211423873901
b = np.array(a)
t3 = time.time()
sum_b = np.sum(b)
t4 = time.time()
print(t4 - t3)
# 0.06466150283813477
ndarray属性
- 数组维度的元组
- ndarray.shape
- 数组元素的类型
- ndarray.dtype
- 默认是int32
- ndarray.dtype
- 数组中元素数量
- ndarray.size
- 数组维数
- ndarray.ndim
ndarray.shape
可修改shape属性
shape(一维元素个数, 二维元素个数, 三维元素个数, …)
注意:修改的属性需要根据元素个数设定,如果不计算元素个数,可设定-1,会自动计算当前维度的元素个数(只能设定一个-1)
直接赋值修改
"""
np.array([...]).shape
"""
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 6]
])
# print(a)
# [[1 2 3]
# [4 5 6]]
a.shape = (3, 2)
# print(a)
# [[1 2]
# [3 4]
# [5 6]]
ndarray.arange()
自动生成数组,参数和python内置函数range类似
arange(起始值, 结束值, 步长)
import numpy as np
# print(np.arange(0, 9))
# [0 1 2 3 4 5 6 7 8]
print(np.arange(0, 10, 2))
# [0 2 4 6 8]
ndarray.reshape()
参数为维度元组
reshape((一维元素个数, 二维元素个数, 三维元素个数, …))
import numpy as np
# print(np.arange(0, 9).reshape((3, -1)))
# [[0 1 2]
# [3 4 5]
# [6 7 8]]
# print(np.arange(8).reshape(2, 4))
# [[0 1 2 3]
# [4 5 6 7]]
# print(np.arange(1000).reshape(5, 5, 5, -1))
# [[[[ 0 1 2 3 4 5 6 7]
# [ 8 9 10 11 12 13 14 15]
# [ 16 17 18 19 20 21 22 23]
# [ 24 25 26 27 28 29 30 31]
# [ 32 33 34 35 36 37 38 39]]
# ...]]
print(np.arange(9).reshape(3, -1, 3))
# [[[0 1 2]]
#
# [[3 4 5]]
#
# [[6 7 8]]]
ndarray.dtype
np.int32
np.uint8 无符号整数 0-255
np.object python对象
import numpy as np
# a = np.arange(1, 7).reshape(2, 3)
# a = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float_)
# print(a.dtype)
# float64
# a = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.str_)
# print(a)
# print(a.dtype)
# [['1' '2' '3']
# ['4' '5' '6']]
# <U1
# a = np.array([[1, 2, 3], [4, 5, '100']], dtype=np.uint8)
# print(a)
# print(a.dtype)
# [[ 1 2 3]
# [ 4 5 100]]
# uint8
# arr = np.array(['python', 'tensorflow', 'scikit-learn', 'numpy'], dtype=np.string_)
# print(arr)
# print(arr.dtype)
# [b'python' b'tensorflow' b'scikit-learn' b'numpy']
# |S12
# 12表示最长字符串元素的个数
a = np.array([[1, 2, 3], [4, 5, 'Anna']