【读取Python之外的numpy数组】教程文章相关的互联网学习教程文章

Pickle在Python 2和3之间不兼容numpy数组【代码】

我正在尝试使用此程序加载在Python 3.2中链接here的MNIST数据集:import pickle import gzip import numpywith gzip.open('mnist.pkl.gz', 'rb') as f:l = list(pickle.load(f))print(l)不幸的是,它给了我错误:Traceback (most recent call last):File "mnist.py", line 7, in <module>train_set, valid_set, test_set = pickle.load(f) UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not ...

如何规范化python中的二维numpy数组更简洁?【代码】

给出3次3 numpy阵列a = numpy.arange(0,27,3).reshape(3,3)# array([[ 0, 3, 6], # [ 9, 12, 15], # [18, 21, 24]])为了规范化我想到的二维数组的行row_sums = a.sum(axis=1) # array([ 9, 36, 63]) new_matrix = numpy.zeros((3,3)) for i, (row, row_sum) in enumerate(zip(a, row_sums)):new_matrix[i,:] = row / row_sum必须有更好的方法,不是吗? 也许要澄清:通过归一化我的意思是,每行的总和必须是1.但我认...

python – 使用重复索引递增Numpy数组【代码】

我有一个Numpy数组和一个索引列表,其值我想增加一个.此列表可能包含重复的索引,我希望增量与每个索引的重复次数一致.没有重复,命令很简单:a=np.zeros(6).astype('int') b=[3,2,5] a[b]+=1有了重复,我想出了以下方法.b=[3,2,5,2] # indices to increment by one each replicate bbins=np.bincount(b) b.sort() # sort b because bincount is sorted incr=bbins[np.nonzero(bbins)] #...

python – 是否有可能对NumPy数组进行递归计算,其中每个元素依赖于前一个元素?【代码】

T(i) = Tm(i) + (T(i-1)-Tm(i))**(-tau(i))Tm和tau是具有先前已经计算的相同长度的NumPy向量,并且期望创建新向量T.仅包括i以指示期望的元素索引. 这种情况需要for循环吗?解决方法:您可能认为这会起作用:import numpy as np n = len(Tm) t = np.empty(n)t[0] = 0 # or whatever the initial condition is t[1:] = Tm[1:] + (t[0:n-1] - Tm[1:])**(-tau[1:])但事实并非如此:你实际上不能以这种方式进行numpy的递归(因为numpy会计...

python – 二进制numpy数组到整数列表?【代码】

我有一个二进制数组,我想将它转换为整数列表,其中每个int是数组的一行. 例如:from numpy import * a = array([[1, 1, 0, 0], [0, 1, 0, 0], [0, 1, 1, 1], [1, 1, 1, 1]])我想将a转换为[12,4,7,15].解决方法:我曾经问了类似的问题here.这是my answer,适合你的问题:def bool2int(x):y = 0for i,j in enumerate(x):y += j<<ireturn yIn [20]: a Out[20]: array([[1, 1, 0, 0],[0, 1, 0, 0],[0, 1, 1, 1],[1, 1, 1, 1]])In [21]: [...

python – 为什么NumPy数组如此之快?

我刚刚改变了一个我正在编写的程序,将我的数据保存为numpy数组,因为我遇到了性能问题,而且差别很大.它最初运行需要30分钟,现在需要2.5秒! 我想知道它是如何做到的.我认为这是因为它消除了for循环的需要但超出了我的难度.解决方法:Numpy数组是密集的同类型数组.相比之下,Python列表是指向对象的指针数组,即使它们都属于同一类型.所以,你获得了locality of reference的好处. 此外,许多Numpy操作在C中实现,避免了Python中的循环,指针...

python – 获取多维numpy数组中最大项的位置【代码】

如何才能获得多维numpy数组中最大项的位置?解决方法:argmax()方法应该有所帮助. 更新 (阅读评论后)我相信argmax()方法也适用于多维数组.链接的文档提供了一个示例:>>> a = array([[10,50,30],[60,20,40]]) >>> maxindex = a.argmax() >>> maxindex 3更新2 (感谢KennyTM的评论)您可以使用unravel_index(a.argmax(),a.shape)将索引作为元组获取:>>> from numpy import unravel_index >>> unravel_index(a.argmax(), a.shape) (1, ...

python – 根据键转换numpy数组中的每个元素【代码】

我试图根据给定的键翻译numpy.array的每个元素: 例如:a = np.array([[1,2,3],[3,2,4]])my_dict = {1:23, 2:34, 3:36, 4:45}我想得到:array([[ 23., 34., 36.],[ 36., 34., 45.]])我可以看到如何使用循环:def loop_translate(a, my_dict):new_a = np.empty(a.shape)for i,row in enumerate(a):new_a[i,:] = map(my_dict.get, row)return new_a是否有更高效和/或纯粹的numpy方式? 编辑: 我计时了,DSM提出的np.vectorize方法...

python – 在numpy数组中查找相同值的序列长度(运行长度编码)【代码】

在pylab程序中(也可能是一个matlab程序)我有一个代表距离的numpy数组:d [t]是时间t的距离(我的数据的时间跨度是len(d)时间单位) . 我感兴趣的事件是当距离低于某个阈值时,我想计算这些事件的持续时间.很容易得到一个b = d <阈值的布尔数组,问题归结为计算b中纯真词的长度序列.但我不知道如何有效地做到这一点(即使用numpy原语),并且我使用数组并进行手动更改检测(即当值从False变为True时初始化计数器,只要值为True就增加计数器,当...

python – 始终创建相同的随机numpy数组【代码】

我正在等待另一个开发人员完成一段代码,该代码将返回一个形状为np的数组(100,2000),其值为-1,0或1. 与此同时,我想随机创建一个具有相同特征的数组,这样我就可以在开发和测试方面领先一步.问题是我希望这个随机创建的数组每次都是相同的,所以我不会测试每次重新运行我的进程时不断更改其值的数组. 我可以像这样创建我的数组,但有没有办法创建它,以便每次都相同.我可以腌制物体并解开它,但想知道是否还有另一种方法.r = np.random.ra...

python – 在numpy数组中查找最接近的值【代码】

有一种numpy-thonic方式,例如函数,找到数组中最近的值? 例:np.find_nearest( array, value )解决方法: import numpy as np def find_nearest(array, value):array = np.asarray(array)idx = (np.abs(array - value)).argmin()return array[idx]array = np.random.random(10) print(array) # [ 0.21069679 0.61290182 0.63425412 0.84635244 0.91599191 0.00213826 # 0.17104965 0.56874386 0.57319379 0.28719469]valu...

python – 从np.empty初始化numpy数组【代码】

从空内存初始化ndarray时,符号位是如何确定的?>>> np.random.randn(3,3) array([[-0.35557367, -0.0561576 , -1.84722985],[ 0.89342124, -0.50871646, 1.31368413],[ 0.0062188 , 1.62968789, 0.72367089]]) >>> np.empty((3,3)) array([[0.35557367, 0.0561576 , 1.84722985],[0.89342124, 0.50871646, 1.31368413],[0.0062188 , 1.62968789, 0.72367089]])从空记忆中初始化的这些浮点值已经失去了它们的标志?.这是为什么? ...

python – 将vtkPoints转换为numpy数组?【代码】

我在Python脚本中使用Mayavi2来计算3d等值面.结果我得到了一个vtkPoints对象.现在我想将这个vtkPoints对象(下面的代码示例中的’vtkout’)转换为一个简单的numpy数组,其中3行包含所有x,y和z值.我使用这样的代码得到vtkout:import numpy from enthought.mayavi import mlab import arrayrandVol = numpy.random.rand(50,50,50) # fill volume with some random potential X, Y, Z = numpy.mgrid[0:50, 0:50, 0:50] # g...

Boost.python重载了numpy数组和python列表的构造函数【代码】

给定使用Boost.Python公开的C类,如何公开两个构造函数: >一个采用numpy数组,和>另一个需要python列表?解决方法:我不是100%的意思,但我假设你想让一个构造函数采用Python列表而另一个采用numpy数组.有几种方法可以解决这个问题.最简单的方法是使用make_constructor函数并重载它:using boost; using boost::python;shared_ptr<MyClass> CreateWithList(list lst) {// construct with a list here }shared_ptr<MyClass> CreateWit...

python – 如何将常规numpy数组转换为记录数组?【代码】

我读了一系列数字np.array(f.read().split(),dtype=np.float64)然后我使用np.reshape()将其转换为二维数组. 在此之后,如何将arr转换为记录数组?我尝试了(类似)以下内容:filename = 'unstructured-file.txt' nfields = 3 names = ('r','g','b') with open(filename,'r') as f:arr = np.array(f.read().split(),dtype=np.float64)arr = arr.reshape(-1,nfields)out = np.array(arr,dtype=zip(names,['float64']*length(names))但是...