numpy笔记

记录numpy的几种操作:形状、降维、堆叠、取子集、广播、统计学

形状

reshape只是返回改变形状后的预览状态,如使用需赋值。

resize方法的返回结果为空,但是它却真正的改变了组数的形状。

降维

# 在默认排序的情况下,优先按照数组的行顺序,逐个将元素将至一维。
print(arr.ravel())
print(arr.reshape(-1))
print(arr.flatten())

# 如果我们需要按照列的顺序把数组降到一维的话,需要把参数order设置成为"F"。
print(arr.ravel(order='F'))
print(arr.reshape(-1, order='F'))
print(arr.flatten(order='F'))
import numpy as np

arr = np.array([[1,10,100],
                [2,20,200],
                [3,30,300]])
print(arr)

# flatten不会改变元素值
print(arr.flatten())
arr.flatten()[0]=2000
print(arr)

# ravel方法会改变元素的值
print(arr.ravel())
arr.ravel()[0]=1000
print(arr)

# reshape方法会改变元素的值
print(arr.reshape(-1))
arr.reshape(-1)[0]=3000
print(arr)

堆叠

import numpy as np

arr1 = np.array([[1, 10, 100],
                 [2, 20, 200],
                 [3, 30, 300]])
arr2 = np.array([1, 2, 3])

#按行堆叠
print(np.vstack([arr1, arr2]))
print(np.row_stack([arr1, arr2]))

#按列堆叠
arr3 = np.array([[5], [6], [7]])
print(arr3)
print(np.hstack([arr1, arr3]))
print(np.column_stack([arr1, arr3]))

多个数组横向堆叠时,要保证行数相同,纵向合并,则要保证列数相同。

取子集


import numpy as np

arr1 = np.array([23, 12, 25])
arr2 = np.array([21, 15, 23])

# 取子集运算
# 取出arr1中元素大于arr2中的元素. 对应位置比较
print(arr1[arr1 > arr2])
# [23 25]


# 取出arr1中元素大于24中的元素
print(arr1[arr1 > 24])
# [25]

# 将arr1中所有大于24的元素改为0
print(np.where(arr1 > 24, 0, arr1))
# [23 12  0]

# 这里打印的是一个列表
print(list(0 if x > 24 else x for x in arr1))

print(np.where(arr2 > 16, 1, 0))
# [1 0 1]

广播运算

矩阵形状不同的时候,自动扩展广播。

统计学

方差np.var(arr,axis)
标准差np.std(arr,axis)

posted on 2020-02-07 18:07  宋岳庭  阅读(114)  评论(0编辑  收藏  举报