ndarray的操作

import numpy as np
import matplotlib.pyplot as plt

# 1.索引  一维与列表完全一致 多维也与列表完全一致  可以根据索引修改数据
n1 = np.random.randint(0, 100, 10)
print(n1, "索引为3的值为:%d" % n1[3])  
# [13 44 75 33 49 59 42 17 38 18] 索引为3的值为:33

n2 = np.random.randint(0, 100, (3, 4))
print(n2, "n2[1][2]的值为:%d" % n2[1, 2])


# 2.切片 一维与列表完全一致 多维也与列表完全一致  可以将数据进行反转,例如[1,2,3]--->[3,2,1]
# 切片时遵循左闭右开的原则 两个::进行切片
n3 = np.random.randint(50, 150, size=10)
print(n3, "从0-5的数据结果为:%s" % n3[0:5])

n4 = np.random.randint(50, 150, size=(3, 4))
print(n4, "n4[1][1]和n4[1][2]的值分别为:%s" % n4[1:2, 1:3])

# 将数据反转
n5 = np.arange(0, 10, 1)
print(n5, n5[::2], n5[::-2], n5[::-1])


# 3.变形 使用reshape函数,注意参数是一个tuple元组类型
print(n3.shape)
print(n3.reshape(5, 2))  # 10 = 5 * 2


# 4.级联
'''np.concatenate()级联需要注意的点:
1.级联的参数是列表:一定要加中括号或小括号
2.维度必须相同
3.形状相符
4.激烈的方向默认是shape这个tuple的第一个值所代表的维度方向
5.可通过axis参数改变级联的方向 axis=0按行级联,axis=1按列级联 
'''
n5 = np.random.randint(0, 10, size=(2, 2))
print(n5)
print(np.concatenate((n5, n5), axis=0))
print(np.concatenate((n5, n5), axis=1))

# 1.np.hstack和np.vstack  水平级联与垂直级联,处理自己,进行维度的变更
print(np.vstack(n5))  # vertical 垂直
print(np.hstack(n5))


# 5.切分 与级联类似,三个函数完成切分工作:np.split,np.vsplit,np.hsplit。axis=0 默认,切分行,axis=1 切分列
n6 = np.random.randint(0, 150, size=(5, 4))
print(n6)
print(np.split(n6, (1, 3))[0])
# 在垂直方向切分的是行
print("==========================================")
print(np.vsplit(n6, (1, 3)))
print("************************************************")
print(np.hsplit(n6, (1, 3)))


# 6.副本 所有赋值运算不会为ndarray的任何元素创建副本。对赋值后的对象的操作也对原来的对象生效。
# 可使用copy()函数创建副本
list1 = [1, 2, 3, 4, 5]
n7 = np.array(list1)
n7[4] = 6
print(n7)
# 当我们的数据量是ndarray,如果我们用=赋值,内存没有改变。 所有赋值运算不会为ndarray的任何元素创建副本。
n8 = n7.copy()
n8[4] = 7
print(n7, n8)
全部评论

相关推荐

我见java多妩媚:大外包
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务