文章目录
- 一、创建数组:
* - 例题10-1:创建数组并查看数组属性
- 构造复杂数组
- 生成随机数
- 例题10-2:绘制:随机生成10000数据,服从均值为0,方差为1的正态分布的直方图(间隔个数:50)
- 通过索引访问数组
- 数组的迭代
- 二、四则运算:
* - 数组间的四则运算
- 一个数与数组的四则运算
- 比较运算
- 逻辑运算
- 数组的转置
- 数组的点积运算
- 三、NumPy矩阵运算:
* - NumPy矩阵运算
- 例题10-4:数组、矩阵之间的线性代数运算
- 四、NumPy读写文件:
* - 保存一个数组
- 保存多个数组
- 例题10-5:编写程序,读取数据,保存在文件.csv中。
- 例题10-6:读.txt文件
- 总结
一、创建数组:
例题10-1:创建数组并查看数组属性
代码如下:
import numpy as np
arr1 = np.array([1, 2, 3, 4])
print("数组的尺寸:", np.shape(arr1))
arr2 = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]])
print("数组的尺寸:", np.shape(arr2))
print(arr2.shape[0])
print(arr2.shape[1])
构造复杂数组
代码如下:
import numpy as np
a = np.arange(5)
b = np.tile(a, 2)
c = np.tile(a, (3, 2))
d = a.repeat(2)
print(b)
print(c)
print(d)
运行结果:
生成随机数
代码如下:
import numpy as np
np.random.seed(0)
A = np.random.rand(4)
print(A)
a = [i for i in range(10)]
b = [np.random.choice(a) for i in range(6)]
print(b)
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
y = np.random.permutation(x)
np.random.shuffle(x)
print(x)
运行结果:
例题10-2:绘制:随机生成10000数据,服从均值为0,方差为1的正态分布的直方图(间隔个数:50)
代码如下:
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
data = np.random.normal(0, 1, 10000)
print(min(data), max(data))
n, bins, patches = plt.hist(
data, 50, facecolor='red', edgecolor='white')
plt.grid(True)
plt.show()
运行结果:
通过索引访问数组
代码如下:
import numpy as np
arr = np.arange(10)
print(arr[5])
print(arr[3:5])
print(arr[:5])
print(arr[-1])
print(arr[6:-1:2])
print(arr[5:1:-2])
arr = np.array([[1, 2, 3, 4, 5], [4, 5, 6, 7, 8], [7, 8, 9, 10, 11]])
print(arr[2, 3])
print(arr[0, 3:5])
print(arr[1:, 2:])
print(arr[1:, 2:])
print(arr[2:])
print(arr[:, 2])
运行结果:
数组的迭代
代码如下:
import numpy as np
a = np.arange(2, 8, 2)
for i in a:
print(i, end=',')
for i in enumerate(a):
print(i, i[0], i[1])
运行结果:
二、四则运算:
数组间的四则运算
代码如下:
import numpy as np
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
z = np.array("1,2,3")
print(x + y)
print(x - y)
print(x * y)
print(x / y)
print(x ** y)
运行结果:
一个数与数组的四则运算
代码如下:
import numpy as np
a = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]])
b = 2 * a
c = b.reshape(4, 3)
print(a)
print(b)
print(c)
运行结果:
比较运算
代码如下:
import numpy as np
x = np.array([1, 3, 5])
y = np.array([2, 3, 4])
print(x < y)
print(x >= y)
print(x == y)
print(x != y)
运行结果:
逻辑运算
代码如下:
import numpy as np
x = np.array([1, 3, 5])
y = np.array([2, 3, 4])
print(np.all(x == y))
print(np.all(x != y))
print(np.any(x != y))
运行结果:
数组的转置
代码如下:
import numpy as np
a = np.array([1, 2, 3, 4])
b = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]])
c = np.transpose(a)
d = np.transpose(b)
print(c)
print(d)
运行结果:
数组的点积运算
代码如下:
import numpy as np
a = np.array([1, 2, 3, 4])
b = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]])
e = np.dot(b, a)
print(np.shape(e), e)
运行结果:
三、NumPy矩阵运算:
NumPy矩阵运算
代码如下:
import numpy as np
matr1 = np.matrix("1 2 3;0 5 6;0 0 9")
matr2 = matr1 * 3
matr3 = matr1 + matr2
matr4 = matr1 - matr2
matr5 = matr1 * matr2
matrB = np.multiply(matr1, matr2)
matr6 = matr1.T
matr8 = matr1.H
matr9 = matr1.I
运行结果:
例题10-4:数组、矩阵之间的线性代数运算
代码如下:
import numpy as np
x = np.array([[1, 2, 3], [0, 1, -1], [1, 0, 0]])
print(np.linalg.det(x))
y = np.linalg.inv(x)
a = np.dot(x, y)
b = np.mat(x)*np.mat(y)
c = x * y
print(a == b)
d = np.linalg.eigvals(x)
print(d)
e = np.linalg.eig(x)
print(e[0], e[1])
运行结果:
四、NumPy读写文件:
保存一个数组
代码如下:
import numpy as np
arr = np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]])
print(arr)
np.save("save_arr", arr)
load_arr = np.load("save_arr.npy")
print(load_arr)
运行结果:
保存多个数组
代码如下:
import numpy as np
x = np.array(range(20)).reshape((2, 2, 5))
y = np.array(range(10, 34)).reshape(2, 3, 4)
print('x:\n', x)
print('y:\n', y)
filename = 'c:\\qun1\\test\\test.npz'
np.savez(filename, x, key_y=y)
c = np.load(filename)
print('keys of NpzFile c:\n', c.keys())
print("c['arr_0']:\n", c['arr_0'])
print("c['key_y']:\n", c['key_y'])
运行结果:
例题10-5:编写程序,读取数据,保存在文件.csv中。
代码如下:
import numpy as np
import xlrd
wb = xlrd.open_workbook("历年总人口.xls")
sheet = wb.sheet_by_index(0)
col_0 = sheet.col_values(0)
col_1 = sheet.col_values(1)
year = col_0[1:]
total = col_1[1:]
year = [int(c) for c in year]
total = [int(c) for c in total]
wb = xlrd.open_workbook("历年新生人口和死亡人口.xls")
sheet = wb.sheet_by_index(0)
col_1 = sheet.col_values(1)
col_2 = sheet.col_values(2)
add = col_1[1:]
die = col_2[1:]
add = [int(c[0:-1]) for c in add]
die = [int(c[0:-1]) for c in die]
y = np.array(add)-np.array(die)
m = len(year)
arr = np.array(year).reshape(m, 1)
arr = np.insert(arr, 1, values=total, axis=1)
arr = np.insert(arr, 2, values=add, axis=1)
arr = np.insert(arr, 3, values=die, axis=1)
arr = np.insert(arr, 4, values=y, axis=1)
file = 'c:\\qun1\\test\\大陆历年总人口、新生人口和死亡人口.csv'
np.savetxt(file, arr, fmt='%i', delimiter=',',
comments='', header='年份,总人口,出生人口,死亡人口,净增人口')
x = np.loadtxt(file, dtype=np.int, delimiter=',', skiprows=1)
print(x)
运行结果:
例题10-6:读.txt文件
代码如下:
import numpy as np
f = np.loadtxt('testSet.txt')
print("返回的二维数组f的形状:", np.shape(f))
print(f)
运行结果:
总结
通过本次练习学会了对数组、矩阵进行操作,并通过loadtxt读取和保存csv文件
Original: https://blog.csdn.net/weixin_52560205/article/details/124361707
Author: 清兮.
Title: 第十章 NumPy 库
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/760571/
转载文章受原作者版权保护。转载请注明原作者出处!