问题:

  为什么第一次输出矩阵形式的数据,第二次输出list形式的数据?

详见代码:

a = np.array([[1, 2], [3, 4]])
print(a)
print('ndim :', a.ndim)

控制台输出:

[[1 2]
[3 4]]
ndim : 2

然而,代码修改一下:

b = np.array([[11, 12], [14, 16, 17]])
print(b)
print(type(b))

控制台输出:

[list([11, 12]) list([14, 16, 17])]
<class 'numpy.ndarray'>

答案:

  第二次输出元素 [ [11, 12], [14, 16, 17] ] 在形式上不能用矩阵形式输出,不对称。


问题:

array(p_object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
order : {'K', 'A', 'C', 'F'}, optional
Specify the memory layout of the array. order参数用于:指定数组的内存布局。

  order的作用体现在哪里?

  怎么才能看出数组的内存布局?

答案:

  ndarray.flags属性, 查看ndarray对象的内存信息

  C_CONTIGUOUS : True        c_contiguous(连续的)
F_CONTIGUOUS : False        f_contiguous
OWNDATA : True           own data
WRITEABLE : True          writeable
ALIGNED : True           aligned(对齐)
WRITEBACKIFCOPY : False     write back if copy
UPDATEIFCOPY : False       update if copy

sin():

Parameters
----------
x : array_like
Angle, in radians (:math:`2 \pi` rad equals 360 degrees).

2 \pi = 2π

360°等于2π弧度
在数学和物理中,弧度是角的量度单位.它是由国际单位制导出的单位,单位缩写是rad.(radians)

弧度定义:弧长等于圆半径的弧所对的圆心角为1弧度

根据定义,一周的弧度数为2πr/r=2π, 360°角=2π弧度,因此,1弧度约为57.3°,即57°17'44.806'',1°为π/180弧度,近似值为0.01745弧度,周角为2π弧度, 平角(即180°角)为π弧度, 直角为π/2弧度.
在具体计算中,角度以弧度给出时,通常不写弧度单位,直接写值.最典型的例子是三角函数,如sin 8π、tan (3π/2).
弧长公式:
l rad=nπr/180
在这里,n就是角度数.


np.repeat()使用技巧

c = np.array([[1, 2, 3]])
c = c.reshape(-1, 3).repeat(2, 0)
输出c:
[[1, 2, 3],
[1, 2, 3]]
=====================
cc = c.reshape(-1, 3)
# -1代表不管行数,只是确定列数为3 # repeat用法
d = c.reshape(-1, 3)
d.repeat(2, 0) 可以
d.repeat(preats=2, axis=0) 可以
np.repeat(d, 2, 0) 也可以

问题:

  同样是order排序,传入'C','F'不同,则打印不同?

代码:

import numpy as np
a = np.arange(0, 60, 5).reshape((3, 4))
print(a)
for x in np.nditer(a,flags=['external_loop'], order='C'):
print(x, end=', ')

控制台输出:

[[ 0  5 10 15]
[20 25 30 35]
[40 45 50 55]]
[ 0 5 10 15 20 25 30 35 40 45 50 55],

然而,代码:

import numpy as np
a = np.arange(0, 60, 5).reshape((3, 4))
print(a)
for x in np.nditer(a,flags=['external_loop'], order='F'):
print(x, end=', ')

控制台输出:

[[ 0  5 10 15]
[20 25 30 35]
[40 45 50 55]]
[ 0 20 40], [ 5 25 45], [10 30 50], [15 35 55],

答案:

  迭代器遍历对应于每列,并组合为一维数组。(默认)


问题:

  a.T在nditer中迭代不应该输出

[[0 3]
[1 4]
[2 5]]

  吗?

代码:

a = np.arange(6).reshape(2, 3)
print(a)
print(a.T)
print(a.T.flags)
for x in np.nditer(a.T):
print(x, end=', ')
print('\n')

控制台输出:

[[0 1 2]
[3 4 5]] [[0 3]
[1 4]
[2 5]] C_CONTIGUOUS : False
F_CONTIGUOUS : True
OWNDATA : False
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False 0, 1, 2, 3, 4, 5,

答案:

  np.nditer(..., order='K') :

    order参数默认‘K’

  源码中,as close sth. as possible : 尽可能靠近

'K' means as close to the order the array elements appear in memory as possible.

  翻译:'K' 意味着,(顺序要)尽可能靠近内存中出现的的数组的元素顺序。   


=============================================

NumPy的思考……的更多相关文章

  1. numpy库:常用基本

    numpy 本文主要列出numpy模块常用方法 大部分内容来源于网络,而后经过自己的一点思考和总结,如果有侵权,请联系我 我是一名初学者,有哪些地方有错误请留言,我会及时更改的 创建矩阵(采用ndar ...

  2. numpy.trace对于三维以上array的解析

    numpy.trace是求shape的对角线上的元素的和,具体看 https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.t ...

  3. [转]numpy 100道练习题

    100 numpy exercise 翻译:YingJoy 网址: https://www.yingjoy.cn/ 来源:https://github.com/rougier/numpy-100 Nu ...

  4. Python笔记 #06# NumPy Basis & Subsetting NumPy Arrays

    原始的 Python list 虽然很好用,但是不具备能够“整体”进行数学运算的性质,并且速度也不够快(按照视频上的说法),而 Numpy.array 恰好可以弥补这些缺陷. 初步应用就是“整体数学运 ...

  5. 【CV知识学习】神经网络梯度与归一化问题总结+highway network、ResNet的思考

    这是一篇水货写的笔记,希望路过的大牛可以指出其中的错误,带蒟蒻飞啊~ 一.    梯度消失/梯度爆炸的问题 首先来说说梯度消失问题产生的原因吧,虽然是已经被各大牛说烂的东西.不如先看一个简单的网络结构 ...

  6. NNs(Neural Networks,神经网络)和Polynomial Regression(多项式回归)等价性之思考,以及深度模型可解释性原理研究与案例

    1. Main Point 0x1:行文框架 第二章:我们会分别介绍NNs神经网络和PR多项式回归各自的定义和应用场景. 第三章:讨论NNs和PR在数学公式上的等价性,NNs和PR是两个等价的理论方法 ...

  7. NN入门,手把手教你用Numpy手撕NN(2)

    这是一篇包含较少数学推导的NN入门文章 上篇文章中简单介绍了如何手撕一个NN,但其中仍有可以改进的地方,将在这篇文章中进行完善. 误差反向传播 之前的NN计算梯度是利用数值微分法,虽容易实现,但是计算 ...

  8. 使用NumPy、Numba的简单使用(二)

    本来要写NLP第三课动态规划的,日了,写到一半发现自己也不会了,理论很简单,动态规划咋回事也知道,但是实现在源码上还是有点难度,现在简单给予题目描述,小伙伴也可以来思考一下,例题一,我们现在有1元硬币 ...

  9. 从时序异常检测(Time series anomaly detection algorithm)算法原理讨论到时序异常检测应用的思考

    1. 主要观点总结 0x1:什么场景下应用时序算法有效 历史数据可以被用来预测未来数据,对于一些周期性或者趋势性较强的时间序列领域问题,时序分解和时序预测算法可以发挥较好的作用,例如: 四季与天气的关 ...

随机推荐

  1. Android的LinearLayout中orientation默认值为什么是HORIZONTAL

    在一个偶然(闲着无聊)的过程中,突然非常好奇为什么LinearLayout在不指定排列方向为垂直(VERTICAL)时就得是水平方向(HORIZONTAL)排列的.产生这个疑问的时候脑子里蹦出来的第一 ...

  2. [问题]Android listView item edittext 不能调用软键盘输入法

    android listview item edittext not  softkeyboard edittext可以获取焦点, 可以触发事件, 但是就是不能调用输入法, 不知道为什么? 难道不能在i ...

  3. <Android基础>(四) Fragment Part 1

    Fragment 1)Fragment的简单用法 2)动态添加Fragment 3)在Fragment中模拟返回栈 4)Fragment和活动之间通信 第四章 Fragment Fragment是一种 ...

  4. Java之函数式接口

    函数式接口 概述:接口中只有一个抽象方法 下面介绍的可能很抽象,理解不了,至少在我看来单独的这几个借口是没有用的,跟最下面说的 Stream流一起用才会有效果 函数式接口,即适用于函数式编程场景的接口 ...

  5. Gaussian Process for Regression

    python风控评分卡建模和风控常识(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005214003&am ...

  6. 使用catboost解决ML中高维度不平衡数据集挑战的解决方案

    python风控评分卡建模和风控常识(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005214003&am ...

  7. DMA设计

    目录 DMA设计 DMA框架 手册请看英文手册 芯片特性 请求来源 协议简述 基本时序 模式 协议 数据大小的描述 具体完整的实例时序 代码设计 驱动程序 测试程序 测试 参考链接 title: DM ...

  8. Python的设计模式

    设计模式是什么? 设计模式是经过总结.优化的,对我们经常会碰到的一些编程问题的可重用解决方案.一个设计模式并不像一个类或一个库那样能够直接作用于我们的代码.反之,设计模式更为高级,它是一种必须在特定情 ...

  9. EF CodeFirst系列(8)--- FluentApi配置单个实体

    我们已经知道了在OnModelCreating()方法中可以通过FluentApi对所有的实体类进行配置,然而当实体类很多时,我们把所有的配置都放在OnModelCreating()方法中很难维护.E ...

  10. React 记录(4)

    React文档:https://www.reactjscn.com/docs/components-and-props.html 慢慢学习:对照教程文档,逐句猜解,截图 React官网:https:/ ...