Numpy基础笔记

一、Numpy列表简单介绍

1、numpy其实就是多维的数组对象

import numpy as np

data = [1, 2, 3, 4]
n = np.array(data)
print(data)
print(n)
print(n.shape)
print(n.dtype)

2、嵌套序列:是有一组等长列表组成的列表

arr = [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
arr2 = np.array(arr)
print(arr)
print(arr2)
print(arr2.shape)

3、numpy会对数据类型进行推理

arr = [['1', '2', 3, 4], ['5', 6, 7, 8]]
arr2 = np.array(arr)
print(arr)
print(arr2)
print(arr2.dtype)

arr = [[1.21, 2.12, 3, 4], [1, 2, 3, 4]]
arr2 = np.array(arr)
print(arr)
print(arr2)
print(arr2.dtype)

4、指定长度的数组的快速创建

np.zeros([2, 3])
np.zeros([2, 3, 4])

np.ones([2, 3])

np.empty((3, 3))

np.arange(10)

5、类型转换

arr = np.array([1, 2, 1, 3, 1,4, -2.1, -2.2, -3.3])
print(arr)
print(arr.astype(np.int32))

6、矢量化 -- 进行数据的批量运算和处理

# 加法:维度相等
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([11, 22, 33, 44])
arr1 + arr2

arr1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
arr2 = np.array([[11, 22, 33, 44], [55, 66, 77, 88]])
print(arr1 + arr2)

# 乘法
arr1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
arr2 = np.array([[11, 22, 33, 44], [55, 66, 77, 88]])
print(arr1 * arr2)

7、索引和切片操作

arr = np.arange(10)
print(arr)

arr[2:4]

aa = arr.copy()
print(aa)

aa[2]

aa[2] = 22
aa

aa[6:] = 666
aa

arr1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
arr1[1][0:]

8、numpy array的比较运算

names = np.array(['张三','李四','王五'])
names == '张三'

# 关系运算 & 、|
(names == '张三') & (names == '李三')

9、花式索引 fancy indexing numpy中的一个术语,指的是利用整数数组来进行索引

arr = np.empty((8, 4))
for i in range(len(arr)):
    arr[i] = i
print(arr)

print(arr[[3, 4, 0, 1]])

arr = np.arange(32).reshape((8, 4))
print(arr)

arr[[1, 5, 7, 2]]

arr[[1, 5, 7, 2], [0, 3, 2, 1]]

# 切片取整行/列  与数组索引不同,`:`表示所有
arr[[1, 5, 7, 2]][:,[0, 3, 2, 1]]
arr[[1, 5, 7, 2]][[0, 1, 2, 3],[0, 3, 2, 1]]
arr[[1, 5, 7, 2]][1:3,[0, 3, 2, 1]]
arr[[1, 5, 7, 2]][[3,2,1,0],:]
arr[[1, 5, 7, 2]][[3,2,1,0],0:3]

10、数组转置

arr = np.arange(15).reshape(3, 5)
print(arr)

arr.T
arr.transpose()

11、轴转置

arr = np.arange(24).reshape(2,3,4)
print(arr)

a = arr.transpose((1, 2, 0))
print(a)
# matplotlib
points = np.arange(-5, 5, 0.01)
xs, ys = np.meshgrid(points, points)
# print(xs)
# print(ys)
import matplotlib.pyplot as plt
z = np.sqrt(xs ** 2 + ys ** 2)
# print(z)
plt.imshow(z, cmap=plt.cm.spring)
plt.colorbar()

12、条件逻辑转数组

x_arr = np.array([1.1, 1.2, 1.3])
y_arr = np.array([2.1, 2.2, 2.3])
condition = np.array([True, False, True])
# zip 接受的参数是可迭代对象
# zip 函数用于将可迭代的对象作为参数,将对象中的元素打包成一个个元组,然后返回由这些元组组成的列表
l = zip(x_arr, y_arr, condition)
result = [x if z else y for x, y, z in l]
print(result)

np.where(condition, x_arr, y_arr)

13、值替换

arr = np.random.randn(4, 4)
print(arr)

arr = np.random.randn(4, 4)
print(arr)
arr_1 = np.where(arr>0, 5, -5)
print(arr_1)

arr = np.random.randn(4, 4)
print(arr)
arr_1 = np.where(arr>0, 5, arr)
print(arr_1)

14、numpy简单的数学运算

arr = np.arange(8).reshape(2,4)
print(arr)

arr.mean()
arr.sum()

arr.mean(axis=0)  # 列
arr.mean(axis=1)  # 行

arr.sum(axis=0)  # 列
arr.sum(axis=1)  # 行
# 排序
arr = np.array([9,8,7,6,5,4,3,2,1]).reshape(3, 3)
print(arr)
arr.sort()
print(arr)
position = 0
walk = [position]
steps = 1000
for i in range(steps):
    step = 1 if np.random.randint(0,2) else -1
    position += step
    walk.append(position)
    
a = plt.plot(walk)
a

(np.abs(walk)  == 10).argmax()

二、常用画图工具

1、matplotlib画图

官网:https://matplotlib.org/gallery/index.html

# 示例 1:
import matplotlib.pyplot as plt
import numpy as np


labels = ['G1', 'G2', 'G3', 'G4', 'G5', 'G6']
men_means = [20, 34, 30, 35, 27, 10]
women_means = [25, 32, 34, 20, 25, 12]

x = np.arange(len(labels))  # the label locations
width = 0.35  # the width of the bars

fig, ax = plt.subplots()
rects1 = ax.bar(x - width/2, men_means, width, label='Men')
rects2 = ax.bar(x + width/2, women_means, width, label='Women')

# Add some text for labels, title and custom x-axis tick labels, etc.
ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(x)
ax.set_xticklabels(labels)
ax.legend()


def autolabel(rects):
    """Attach a text label above each bar in *rects*, displaying its height."""
    for rect in rects:
        height = rect.get_height()
        ax.annotate('{}'.format(height),
                    xy=(rect.get_x() + rect.get_width() / 2, height),
                    xytext=(0, 3),  # 3 points vertical offset
                    textcoords="offset points",
                    ha='center', va='bottom')


autolabel(rects1)
autolabel(rects2)

fig.tight_layout()

plt.show()
# 示例 2:
import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(6, 3), subplot_kw=dict(aspect="equal"))

recipe = ["375 g flour",
          "75 g sugar",
          "250 g butter",
          "200 g berries",
         "100 g test"]

data = [float(x.split()[0]) for x in recipe]
ingredients = [x.split()[-1] for x in recipe]


def func(pct, allvals):
    absolute = int(pct/100.*np.sum(allvals))
    return "{:.1f}%\n({:d} g)".format(pct, absolute)


wedges, texts, autotexts = ax.pie(data, autopct=lambda pct: func(pct, data),
                                  textprops=dict(color="w"))

ax.legend(wedges, ingredients,
          title="Ingredients",
          loc="center left",
          bbox_to_anchor=(1, 0, 0.5, 1))

plt.setp(autotexts, size=8, weight="bold")

ax.set_title("Matplotlib bakery: A pie")

plt.show()

2、echarts画图

官网:https://matplotlib.org/gallery/index.html
pyecharts官网:https://pyecharts.org/#/zh-cn/quickstart?id=%e5%a6%82%e4%bd%95%e5%ae%89%e8%a3%85

# -*- coding:utf-8 -*-
__author__ = 'hope'
__date__ = '2020-05-06'

from pyecharts.charts import Bar


def test_bar_1():
    bar = Bar()
    bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
    bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
    # render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件
    # 也可以传入路径参数,如 bar.render("mycharts.html")
    bar.render()


def test_bar_2():
    bar = (
        Bar()
        .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
        .add_yaxis("商家X", [5, 20, 36, 10, 75, 90])
    )
    bar.render()


if __name__ == '__main__':
    # test
    # test_bar_1()
    test_bar_2()

3、Axure画图

产品经理设计时常用;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342