我有一个numpy数组向量,我想得到一个基于索引的子集:import numpy as np input=np.array([1,2,3,4,5,6,7,8,9,10]) index=np.array([0,1,0,0,0,0,1,0,0,1])什么是pythonic方法来输出输出= [2,7,10]?解决方法: output = input[index.astype(np.bool)]要么output = input[np.where(index)[0]]
如果我有一个numpy数组,例如:A = np.array([[3, 2], [2, -1], [2, 3], [5, 6], [7,-1] , [8, 9]])我想将数组的部分与具有-1的子数组分开.请记住,我正在处理非常大的数据集,所以每个操作都可能很长,所以我尝试以最有效的方式记忆内存和CPU时间. 我现在正在做的是:slicing1 = np.where(A[:, 1] == -1)with_ones = A[slicing1]slicing2 = np.setdiff1d(np.arange(A.shape[0]), slicing1, assume_unique=True)without_ones = A[slici...
我有几个2D numpy数组(矩阵),每个我想将它转换为包含数组值的向量和包含每个行/列索引的向量. 例如,我可能有这样的数组:x = np.array([[3, 1, 4],[1, 5, 9],[2, 6, 5]])我基本上想要这些价值观[3, 1, 4, 1, 5, 9, 2, 6, 5]和他们的立场[[0,0], [0,1], [0,2], [1,0], [1,1], [1,2], [2,0], [2,1], [2,2]]我的最终目标是将这些放入pandas DataFrame中,如下所示:V | x | y --+---+--- 3 | 0 | 0 1 | 0 | 1 4 | 0 | 2 1 | 1 | 0 5 | ...
我想将结果数组作为二进制是/否. 我想出来了img = PIL.Image.open(filename)array = numpy.array(img)thresholded_array = numpy.copy(array)brightest = numpy.amax(array)threshold = brightest/2for b in xrange(490):for c in xrange(490):if array[b][c] > threshold:thresholded_array[b][c] = 255else:thresholded_array[b][c] = 0out=PIL.Image.fromarray(thresholded_array)但是一次迭代数组一个值非常慢,我知道必须有一个...
我必须启动大量的计算,每次都要保存一个2D文件文本,所以我想将结果“实时”存储为3D文本文件,每个切片对应一个计算结果. 第一次计算是可以的,但是当我进行第二次计算时,在“np.loadtxt”步骤中,数组尺寸变为2D ……所以我无法实现我的目标……我无法进行重塑当我开始尺寸(…,…,1)#MY FIRST RESULTS test1 = open("C:/test.txt", "r") test_r = np.genfromtxt(test, skip_header=1) test_r = np.expand_dims(test_r, axis=2) #I cr...
给定一个数组’数组’和一组索引’索引’,如何找到通过以矢量化方式沿着这些索引分割数组而形成的子数组的累积和?澄清一下,假设我有:>>> array = np.arange(20) >>> array array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]) indices = np.arrray([3, 8, 14])操作应该输出:array([0, 1, 3, 3, 7, 12, 18, 25, 8, 17, 27, 38, 50, 63, 14, 29, 45, 62, 80, 99])请注意,阵列非常大(100000...
如何为numpy数组上的索引列表执行求和,例如,如果我有一个数组a = [1,2,3,4]并且索引列表为sum,indices = [0,2]和I想要快速操作给我答案4,因为在索引0和索引2中求和值的值是4解决方法:在索引索引后可以直接使用sum:a = np.array([1,2,3,4]) indices = [0, 2] a[indices].sum()
参见英文答案 > Return array of counts for each feature of input 1个想象一下,你有一个2D数组(作为NumPy int数组),如:[[2,2,3,3],[2,3,3,3],[3,3,4,4]]现在,您希望获得具有相同形状的数组,但不是原始值,而是希望将数字替换为其出现次数.这意味着,数字2变为3,因为它发生了3次,3s变为7s,4s变为2s. 所以输出将是:[[3,3,7,7],[3,7,7,7],[7,7,2,2]]我的解决方案是首先创建一个字典,它将所有原始...
我有一个形状(n,4)的numpy数组(mat).该数组有四列和大量(n)行.前三列代表我计算中的x,y,z列.我希望选择那些numpy数组的行,其中x列的值低于给定的数字(min_x)或高于给定数字的值(max_x),并且y列的值低于给定的数字(min_y)或上面的值给定数字(max_y)和z列的值低于给定数字(min_z)或高于给定数字(max_z)的值. 这就是我目前试图实现这个所需功能的方式:import numpy as npmark = np.where( ( (mat[:,0]<=min_x) | (mat[:,...
在纯粹的,非实现的,我可以使用的Python,>>> a = 9 >>> b = [5, 7, 12] >>> a in b False我想为Numpy中的数组做类似的事情,即>>> a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) >>> b = np.array([5, 7, 12]) >>> a in b np.array([False, False, False, False, True, False, True, False, False, False]) ……虽然这不起作用. 有没有实现这一目标的功能或方法?如果不是最简单的方法是什么?解决方法:您正在寻找in1d:>>> import...
我有几个numpy矩阵(确切地说是3维)存储在元组中(a1,b1,c1) (a2,b2,c2) ... (an,bn,cn)我想将每个元组序列化为一个文件,可以在另一台机器上读回Python(Linux => Windows,两者都是x86-64).什么是pythonic方法来实现这一目标?解决方法:numpy.savez或numpy.savez_compressed是要走的路.我听说过,但从来没有遇到某些类型的阵列没有酸洗的问题. 我回忆起this帖子(似乎没有太多问题)以及关于numpy.void not pickling的事情.可能不是问题,...
我需要生成很多随机数.我尝试过使用random.random,但这个功能很慢.因此我切换到numpy.random.random,这更快!到现在为止还挺好.生成的随机数实际上用于计算某些事物(基于数字).因此,我枚举每个数字并替换值.这似乎杀死了我之前获得的所有加速.以下是使用timeit()生成的统计信息:test_random - no enumerate 0.133111953735 test_np_random - no enumerate 0.0177130699158test_random - enumerate 0.269361019135 test_np_random ...
我有一个2d numpy数组像这样的东西:[[ 1 2 3 4],[4,5,6,7]........ ] ]现在我想把它分成两部分.让我们说第一个numpy数组有前两个元素.第二个numpy数组包含其余的元素这样的事情B = [[1 2 3 4],[4 5 6 7]] C = [[ rest of the elements]]我该怎么做呢谢谢解决方法:本教程的Indexing, Slicing, and Iterating部分对此进行了介绍:>>> import numpy as np >>> A = np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]]) >>> B = A[:2] >>> C =...
在预分配大量内存(例如numpy数组)后使用系统调用时会出现性能问题.问题随着内存的增加而增加. test.py:import os import sys import time import numpystart = time.clock() test = int(sys.argv[1]) a = numpy.zeros((test,500,500)) for i in range(test) :os.system("echo true > /dev/null") elapsed = (time.clock() - start) print(elapsed)每次迭代时间急剧增加:edouard@thorin:~/now3/code$python test.py 100 0.64 edou...
我有一个数组,我想看看该数组中的任何元素是否大于或等于该数组中的任何其他元素.我可以做两个for循环,但我的数组长度为10,000或更大,因此创建了一个非常慢的程序.无论如何,我能更快地做到这一点? [编辑]我只需要它来查看它是否大于或等于我正在查看的元素之后的元素,如果是,我需要知道它的索引. [编辑]我将更清楚地重新解释我的问题,因为当前的解决方案不能满足我的需求.首先,这里有一些代码x=linspace(-10, 10, 10000) t=linspa...