Numpy基础篇一

[NumPy用法总结]

NumPy用法总结

快速了解NumPy

NumPy是一个开源的Python科学计算库,用于快速处理任意维度的数组。
NumPy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用NumPy比直接使用Python要简洁的多。
NumPy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器

优势

  1. 对于同样的数值计算任务,使用Numpy要比直接编写Python代码便捷地多
  2. NumPy中的数组的存储效率和输入输出性能均远远优于Python中等价的基本数据结构,且能够提升的性能是与数组中的元素成比例的
  3. Numpy的大部分代码都是用C语言写的,其底层算法在设计时就有着优异的性能,这使得NumPy比纯Python代码高效地多

NumPy的Ndarray对象

创建一维数组

1234567891011121314151617181920# 一维数组
import numpy as np

# 创建数组的多种形式

# 1. 直接传入列表的形式进行创建
list1 = [1,2,3,4,5]
oneArray = np.array(list1)
print(type(oneArray))
print(oneArray)

# 2.传入range()生成序列
t2 = np.array(range(10))
print(t2)
print(type(t2))

# 3. 使用numpy自带的np.arange()生成数组
t3 = np.arange(0,10,2)
print(t3)
print(type(t3))

运行结果:
<class 'numpy.ndarray'>
[1 2 3 4 5]

[0 1 2 3 4 5 6 7 8 9]
<class 'numpy.ndarray'>

[0 2 4 6 8]
<class 'numpy.ndarray'>


创建二维数组

123456# 创建二维数组
import numpy as np
list2 = [[1,2],[3,4],[5,6]]

twoArray = np.array(list2)
print(twoArray)

运行结果:
[[1 2]
[3 4]
[5 6]]


常用属性

12345678910111213141516# 常用属性
import numpy as np

list2 = [[1,2],[3,4],[5,6]]

twoArray = np.array(list2)
print(twoArray)

# 获取数组的维度(注意:与函数的参数很像)
print(twoArray.ndim)

# 形状(行,列)
print(twoArray.shape)

# 有多少个元素
print(twoArray.size)

运行结果:
[[1 2]
[3 4]
[5 6]]

2

(3, 2)

6


调整数组的形状

12345678910111213141516171819import numpy as np

four = np.array([[1,2,3],[4,5,6]])

print(four,four.shape,id(four))
# 修改的是原有的
# four.shape = (3,2)
# print(four)
# 修改返回一个新的数组
# five = four.reshape(3,2)
# print(four,id(five))
# print(four)

# 将多维数组变成一维数组
# 默认情况下 'C'以行为主的顺序展开,'F'(Fortran风格)意味着以列的顺序展开
five = four.reshape((6,),order="F")
six = four.flatten(order='C')
print(five)
print(six)

运行结果:
[[1 2 3]
[4 5 6]] (2, 3) 2183058601424

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


123456789101112# 维度的转换
t = np.arange(24)
print(t)
print(t.shape)
# 转化为二维
t1 =t.reshape((4,6))
print(t1)
print(t1.shape)
# 转化为三维
t2 = t.reshape((2,3,4))
print(t2)
print(t2.shape)

运行结果:
[ 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,)

[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]]
(4, 6)

[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]

[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
(2, 3, 4)


将数组转为list

12345# 将数组转化为列表
a = np.array([9,12,88,14,25])
list_a = a.tolist()
print(list_a)
print(type(list_a))

运行结果:
[9, 12, 88, 14, 25]
<class 'list'>


数组的计算

数组和数的计算

1234567# 数组的操作
t1 = np.arange(24).reshape((6,4))
t2 = np.arange(100,124).reshape((6,4))
print(t1)
print(t2)
print(t1+t2)
print(t1*t2)

运行结果:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]

[[100 101 102 103]
[104 105 106 107]
[108 109 110 111]
[112 113 114 115]
[116 117 118 119]
[120 121 122 123]]

[[100 102 104 106]
[108 110 112 114]
[116 118 120 122]
[124 126 128 130]
[132 134 136 138]
[140 142 144 146]]

[[ 0 101 204 309]
[ 416 525 636 749]
[ 864 981 1100 1221]
[1344 1469 1596 1725]
[1856 1989 2124 2261]
[2400 2541 2684 2829]]


数组与数组之间的操作

123456# 不同形状的多维数组不可以进行计算
t1 = np.arange(24).reshape((4,6))
t2 = np.arange(18).reshape((3,6))
print(t1)
print(t2)
# print(t1-t2)
1234567# 行数或列数相同的一维数组和多维数组也可以进行计算,直适合一维数组和多维数组的情况
# 行形状相同
t1 = np.arange(24).reshape((4,6))
t2 = np.arange(0,6)
print(t1)
print(t2)
print(t1-t2)

运行结果:
[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]]

[0 1 2 3 4 5]

[[ 0 0 0 0 0 0]
[ 6 6 6 6 6 6]
[12 12 12 12 12 12]
[18 18 18 18 18 18]]


123456# 列形状相同
t1 = np.arange(24).reshape((4,6))
t2 = np.arange(4).reshape((4,1))
print(t1)
print(t2)
print(t1+t2)

运行结果:
[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]]

[[0]
[1]
[2]
[3]]

[[ 0 1 2 3 4 5]
[ 7 8 9 10 11 12]
[14 15 16 17 18 19]
[21 22 23 24 25 26]]


posted @ 2021-03-10 13:05  爱笑的加油怪  阅读(38)  评论(0)    收藏  举报