numpy如何使用

numpy介绍

创建numpy的数组

np.array()

传入一个列表, 返回一个数组

li = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
arr = np.array(li)
print(type(arr), arr)
# <class 'numpy.ndarray'> [0 1 2 3 4 5 6 7 8 9]

np.arange(10)

类似于python中的range

arr = np.arange(10)
print(type(arr), arr)
<class 'numpy.ndarray'> [0 1 2 3 4 5 6 7 8 9]
# 和python的range类型, 顾头不顾尾, 支持步长, 和python的range的区别在于, 起始值和步长支持小数
arr = np.arange(1.2, 10.5, 0.5)
print(type(arr), arr)
# <class 'numpy.ndarray'> [ 1.2  1.7  2.2  2.7  3.2  3.7  4.2  4.7  5.2  5.7  6.2  6.7  7.2  7.7 8.2  8.7  9.2  9.7 10.2]

拓展: 将一维数据变成多维数组

前提保证, reshape()中的行和列相乘等于数组中的全部元素的个数

将一维数组转换成二维数组

arr = np.arange(0, 15).reshape(3, 5)
print(arr)
# [[ 0  1  2  3  4]
#  [ 5  6  7  8  9]
#  [10 11 12 13 14]]

将一维数组转换成三维数组

arr = np.arange(30).reshape(3, 2, 5)
print(arr)
# [[[ 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]]]

# 三维数组可以只给出两个数值, 另外一个用-1代替, 自动求剩下一个一个应该是多少
# 比如:arr = np.arange(30).reshape(3, 2, -1)  会自动求出-1位置的数应该是6

np.linspace(0, 10, 5)

把0到10范围的数分成长度为5的数组, 保证每个数之间的差是相等的, 前包后也包

arr = np.linspace(0, 10, 5)
print(type(arr), arr)
# <class 'numpy.ndarray'> [ 0.   2.5  5.   7.5 10. ]

np.zeros(10)

创建全0的数组

arr = np.zeros(10)
print(arr)
# [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
# 默认是float类型, 可以指定dtype, 可以指定创建几维的数据传一个元祖, 比如np.zeros(3,2,5), 就是创建一个3页2行5列的全0数组

np.ones(10)

创建全1的数组

arr = np.ones(10)
print(arr)
# [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
# 默认使用float类型, 可以指定dtype, 可以指定创建几维的数据传一个元祖, 比如np.ones(3,2,5), 就是创建一个3页2行5列的全1数组

np.empty(10)

创建元素为随机的数组

# np.empty(10)的意义: 向内存要一个长度为10的内存, 并不进行赋值, 内存中原本的数据是什么就是什么, 之后可以对这个里面的值进行覆盖, 效率相对高一点
arr = np.empty(10)
print(arr)
# [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]

np.eye(5)

创建单位矩阵, 方形的, 主对角线为1

arr = np.eye(5)  # 类似于np.identity(5)
print(arr)
# [[1. 0. 0. 0. 0.]
#  [0. 1. 0. 0. 0.]
#  [0. 0. 1. 0. 0.]
#  [0. 0. 0. 1. 0.]
#  [0. 0. 0. 0. 1.]]

猜你喜欢

转载自www.cnblogs.com/594504110python/p/10229230.html