numpy的学习笔记

import numpy as np

# 生成一维数组
arr = np.array([range(10)])

# 生成二维数组
arr = np.array([range(10), range(10, 20)])

# 查找数据
arr[i][j]           # 第i+1行第j+1列的值
arr[i]              # 第i+1行的数组


# 数组合并,可三个或三个以上数组同时合并
# 左右拼接,增加列数,注意行数需相同
new_arr = np.hstack((arr_1, arr_2))
# 上下拼接,增加行数,注意列数需相同
new_arr = np.vstack((arr_1, arr_2))

# 数组拆分
# 水平方向,平均拆分成3个
arr_1, arr_2, arr_3 = np.hsplit(arr, 3)
# 垂直方向,平均拆分成2个
arr_1, arr_2 = np.vsplit(arr, 2)

# 数组转列表, 注意维度
arr_list = arr.tolist()
# 列表转数组
arr = np.array(arr_list)

# 删除数组的行或列,num可以为列表,axis=0时表示删除行,axis=1时表示删除列
new_arr = np.delete(arr, num, axis=0)


# 保存数组数据,三种方法,推荐第一种
np.save("arr.npy", arr) 
np.tofile("arr.bin", arr)
# 表示以逗号作为分隔符,格式化为整数保存为txt文本
np.savetxt("arr.txt", arr, delimiter=",", fmt="%d")

# 读取数据
arr = np.load("arr.npy")
# 注意使用fromfile读取数据的时候需要指定格式
arr = np.fromfile("arr.bin", dtype = "int32")
# 同保存数据
arr = np.loadtxt("arr.txt", delimiter = ",", fmt = "%d")
# 关于数组的一些属性

import numpy as np
# 生成一个3x5数组数据由0-15构成
a = np.arange(15).reshape(3, 5)
print(a)
'''
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
'''
print(a.shape)              
# return (3, 5) --> MxN
print(a.ndim)               
# return 2     --> 阶数
print(a.dtype.name)         
# return 'int32'  --> 数据类型名
print(a.itemsize)   
# return 4  --> 每个数据的大小
print(a.size)               
# return 15  --> 数据数
print(type(a))              
# return      --> 数据类型

print(a.sum())          #对a中所有元素求和 
print(a.min())          #求a中元素的最小值
print(a.max())          #求a中元素的最大值
print(a.reshape(1,6))    #将数组变形为1行6列的数组
a.sum(axis=0)            #对每一列求和
a.min(axis=1)            #求每一行最小值
a.cumsum(axis=1)         #求每一行的累加,即array([[1,2,3],[1,2,3]])

print(a.ravel())        #可将多维数组转为一维数组

#重新指定数组的形状为mxn
a.shape = (m, n)        
# 或
a.resize((m, n))
# 关于创建数组
import numpy as np

# 指定dtype,complex表示复数
arr = np.array([1, 2, 3, 4], dtype=complex)
# 生成3x4的全零数组
arr = np.zeros((3, 4))
# 生成3x4的全一数组
arr = np.ones((3, 4))
# 生成3x4的全零数组
arr = np.empty((3, 4))
# 生成一个数组,具有等差序列性质,数据10-30,间隔值为5
arr = np.arange(10, 30, 5)
# 生成一个数组,具有等差序列性质,数据0-2,生成9个数字
arr = np.linspace(0, 2, 9)
# 生成一个数组,创建2x3的数组随机数,值在0-1之间
arr = np.random.random((2,3))
# 关于数组的计算

import numpy as np

arr_1 = np.arange(4)
arr_2 = np.arange(4, 8)

# +、-、*、/同样可以操作,一一对应计算
print(arr_1 - arr_2)
# 每个数的平方
print(arr_1 ** 2)
# 每个数的sin值
print(np.sin(arr_1))
# 进行矩阵乘法
print(arr_1.dot(arr_2))
# 或
print(np.dot(arr_1, arr_2))
# 数组的索引

import numpy as np

arr = np.arange(10)

# 同列表切片
print(arr[1:4])
# 对于多维数组索引,每行有一个切片

# 数组引用
arr_new = arr
print(arr_new is arr) # return True
# 如果对arr_new进行任何修改,则arr也会发生变化

# 数组浅复制
arr_new_1 = arr.view()
print(arr_new_1 is arr) # return False
print(arr_new_1.base is arr) # return True
print(arr_new_1.flags.owndata)  # return False,无独立数据
# 如果修改arr_new_1的形状,arr不发生改变;如果修改arr_new_1的值,arr也会改变

# 数组深复制
arr_new_2 = arr.copy()
print(arr_new_2 is arr) # return False
print(arr_new_2.base is arr) # return False
print(arr_new_2.flags.owndata)  # return True,有独立数据
# arr_new_2发生任何修改,arr都不会变化

你可能感兴趣的:(numpy笔记)