2.数据分析-Numpy_①

本文介绍了Numpy库中的ndarray对象,详细讨论了如何生成不同类型的数组,包括0和1数组、等差等比数列及随机数组,特别是正态分布和均匀分布的创建。此外,还概述了数组的索引、形状修改和类型转换等基本操作。
摘要由CSDN通过智能技术生成
import numpy as np
import matplotlib.pyplot as plt

from pylab import mpl
#显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
#设置正常显示字符
mpl.rcParams["axes.unicode_minus"] = False


一、 numpy初见

1.1 ndarray的介绍

# hello numpy
x=np.array([[1,2,3],
            [9,8,7],
            [6,5,4]])
x
array([[1, 2, 3],
       [9, 8, 7],
       [6, 5, 4]])

1.2 ndarray和原生python效率对比

import random
import time
import numpy as np

a = []
for i in range(10000000):
    a.append(random.random())

# 通过%time魔法方法,查看当前代码运行一次所花费的时间
%time sum_p = sum(a)

#将python中的list转化为ndarray
b = np.array(a)

%time sum_n = np.sum(b)
Wall time: 40.9 ms
Wall time: 11 ms

二、 ndarray的使用

2.1 数组的属性

#数组维度的元组:ndarray.shape
x.shape
(3, 3)
#数组维度:ndarray.ndim
x.ndim
2
#数组中的元素数量:ndarrary.size
x.size
9
#一个数组元素的长度(字节):naarray.itemsize
x.itemsize
4
#数组元素的类型:ndarray.dtype
x.dtype
dtype('int32')

2.2 数组的形状

#一维数组
a = np.array([1,2,3,4])
a.shape
(4,)
#二维数组
b = np.array([[1
以下是对代码的注释: ```python import numpy import scipy.special class NeuralNetwork(): def __init__(self,inputnodes,hiddennodes,outputnodes,learningrate): # 初始化神经网络的输入层、隐藏层、输出层的节点数以及学习率 self.inodes = inputnodes self.hnodes = hiddennodes self.onodes = outputnodes self.lr = learningrate # 初始化输入层到隐藏层和隐藏层到输出层的权重 # 对权重进行随机初始化,取范围为均为0,标准差为节点数的负平方根 self.wih = numpy.random.normal(0.0, pow(self.hnodes, -0.5), (self.hnodes, self.inodes)) self.who = numpy.random.normal(0.0, pow(self.onodes, -0.5), (self.onodes, self.hnodes)) # 定义激活函数为 sigmoid 函数 self.activation_function = lambda x: scipy.special.expit(x) def train(self,input_list,target_list): # 将输入列表和目标列表转换为二维数组 inputs = numpy.array(input_list, ndmin=2).T targets = numpy.array(target_list, ndmin=2).T # 计算隐藏层的输入和输出 hidden_inputs = numpy.dot(self.wih, inputs) hidden_outputs = self.activation_function(hidden_inputs) # 计算输出层的输入和输出 final_inputs = numpy.dot(self.who, hidden_outputs) final_outputs = self.activation_function(final_inputs) # 计算输出层误差和隐藏层误差 output_errors = targets - final_outputs hidden_errors = numpy.dot(self.who.T, output_errors) # 更新隐藏层到输出层和输入层到隐藏层的权重 self.who += self.lr * numpy.dot((output_errors * final_outputs * (1.0 - final_outputs)), numpy.transpose(hidden_outputs)) self.wih += self.lr * numpy.dot((hidden_errors * hidden_outputs * (1.0 - hidden_outputs)), numpy.transpose(inputs)) def query(self,input_list): # 将输入列表转换为二维数组 inputs = numpy.array(input_list, ndmin=2).T # 计算隐藏层的输入和输出 hidden_inputs = numpy.dot(self.wih, inputs) hidden_outputs = self.activation_function(hidden_inputs) # 计算输出层的输入和输出 final_inputs = numpy.dot(self.who, hidden_outputs) final_outputs = self.activation_function(final_inputs) # 返回最终输出 return final_outputs # 创建神经网络实例 input_nodes = 3 hidden_nodes = 3 output_nodes = 3 learning_rate = 0.3 n = NeuralNetwork(input_nodes,hidden_nodes,output_nodes,learning_rate) # 使用训练数据进行训练 training_data = [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6], [0.7, 0.8, 0.9]] for data in training_data: n.train(data, data) # 使用测试数据进行测试 test_data = [0.2, 0.5, 0.8] print(n.query(test_data)) ``` 这个神经网络实现了一个简单的自编码器,训练数据和测试数据都是由一些简单的数字组成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Padaz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值