numpy数组

from numpy import *
import numpy as np
# numpy数组
lst = [0, 1, 2, 3]
a = array(lst)
print(a)
# a 的数据类型
print(type(a))
# 元素类型
print(a.dtype)
# 每个元素所占空间大小
print(a.itemsize)
# 改变a的形状
a.shape = 2, -1
print(a)
# 输出a的形状 或者调用a的属性 shape
print(shape(a))
# 看所有元素占用控件
print(a.nbytes)
# 看数组维数
print(a.ndim)
# 用fill方法讲数组值设为初始值,如果数据类型同 自动转换为numpy中的数据类型
a.fill(-4.1)
print(a)

a = array([1, 2, 3, 4])
print(a[:2])
print(a[-2:])
print(a[::-1])
print(a[::2])
# 如果od代表里程数每天,计算差值
od = array([21000, 21180, 21240, 22100, 22400])
dist = od[1:] - od[:-1]
# od[1:] 从1 开始[21180, 21240, 22100, 22400]
# od[:-1] 到-1索引 即为index_max - 1 结束[21000, 21180, 21240, 22100]
print(dist)  # 计算差值
a = array([1, 2, 3, 4, 5, 6, 7, 8])
a.shape = 2, -1
print(a)
# 多维度取值
print(a[1, 1])
# 索引为0的行数的array
print(a[0])
a = array([[0, 1, 2, 3, 4, 5],
           [10, 11, 12, 13, 14, 15],
           [20, 21, 22, 23, 24, 25],
           [30, 31, 32, 33, 34, 35],
           [40, 41, 42, 43, 44, 45],
           [50, 51, 52, 53, 54, 55]])
# 取出第三行 第4 5 列元素
print(a[2, 3: 5])
# 取出最后两行的最后两列
print(a[-2:, -2:])
# 取出第二列
print(a[:, 1])
# 注意以上切片是引用机制,没有分配新的储存空间
# 改变值也会改变原值
a = array([0, 1, 2, 3, 4])
print(a)
# [0 1 2 3 4]
b = a[1:3]
print(b)
# [1 2]
b.fill(2)
print(a)
# [0 2 2 3 4]
"""
这样的现象在列表中不会出现 如果需新的内存(非引用关系,而是独立内存) 需要调用copy
"""
x = a[:].copy()
print(x)  # [0 2 2 3 4]
x.fill(3)  # 改变x中的值
print(a)  # [0 2 2 3 4]
print(x)  # [0 2 2 3 4]
# 从上可以看出 a没有变化

# 花式索引
a = arange(0, 80, 10)  # 产生等差数组
print(a)  # [ 0 10 20 30 40 50 60 70]
index = [1, 3, 2]
index = array(index)  # 可有可无 可以是np.array取索引也可以是list
y = a[index]
print(y)  # [10 30 20]
mask = array([0, 1, 0, 1, 1, 0, 1, 0], dtype=bool)
y = a[mask]
print(y)  # [10 30 40 60]
a = np.random.rand(10)
print(a)
b = a > 0.5
print(b)
print(a[b])
a = array([[0, 1, 2, 3, 4, 5],
           [10, 11, 12, 13, 14, 15],
           [20, 21, 22, 23, 24, 25],
           [30, 31, 32, 33, 34, 35],
           [40, 41, 42, 43, 44, 45],
           [50, 51, 52, 53, 54, 55]])
print(a)
b = a[(0, 1, 2, 3, 4), (0, 1, 2, 3, 4)]
print(b)
b.fill(2)
print(a)  # 花式索引是 copy
"""
花式索引和切片的区别
花式索引:产生一个新的list 放入原来的 
切片 : 直接用 a[1:2:1]
"""
a = array([0, 12, 5, 20])
b = where(a > 10)
print(b)  # (array([1, 3], dtype=int64),)
print(a[b])  # [12 20]
a = arange(25)
a.shape = 5, -1
r, c = where(a > 10)
print(r)
print(c)
print(a[r, c])

猜你喜欢

转载自blog.csdn.net/SpringQAQ/article/details/81269409