GVKun编程网logo

增长numpy数字数组的最快方法(增长numpy数字数组的最快方法是什么)

16

本文的目的是介绍增长numpy数字数组的最快方法的详细情况,特别关注增长numpy数字数组的最快方法是什么的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解增长nump

本文的目的是介绍增长numpy数字数组的最快方法的详细情况,特别关注增长numpy数字数组的最快方法是什么的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解增长numpy数字数组的最快方法的机会,同时也不会遗漏关于Java 在数字数组中查找缺失数字的最快方法、NumPy数组的最小-最大归一化、python numpy数组的numpy数组、python – 对numpy数组切片进行采样的最快方法是什么?的知识。

本文目录一览:

增长numpy数字数组的最快方法(增长numpy数字数组的最快方法是什么)

增长numpy数字数组的最快方法(增长numpy数字数组的最快方法是什么)

要求:

  • 我需要从数据中任意增加一个数组。
  • 我可以猜测大小(大约100-200),但不能保证每次都适合该数组
  • 一旦增长到最终大小,我就需要对其进行数值计算,因此我更希望最终使用二维numpy数组。
  • 速度至关重要。例如,对于300个文件之一,update()方法被称为4500万次(大约需要150秒),而finalize()方法被称为500k次(总共需要106s)……总共需要250s或者。

这是我的代码:

def __init__(self):    self.data = []def update(self, row):    self.data.append(row)def finalize(self):    dx = np.array(self.data)

我尝试过的其他操作包括以下代码…但这速度会慢一些。

def class A:    def __init__(self):        self.data = np.array([])    def update(self, row):        np.append(self.data, row)    def finalize(self):        dx = np.reshape(self.data, size=(self.data.shape[0]/5, 5))

这是如何称呼它的示意图:

for i in range(500000):    ax = A()    for j in range(200):         ax.update([1,2,3,4,5])    ax.finalize()    # some processing on ax

答案1

小编典典

我尝试了一些不同的事情,并进行了时间安排。

import numpy as np
  1. 您提到的缓慢方法:(32.094秒)

    class A:def __init__(self):    self.data = np.array([])def update(self, row):    self.data = np.append(self.data, row)def finalize(self):    return np.reshape(self.data, newshape=(self.data.shape[0]/5, 5))
  2. 常规ol Python列表:(0.308秒)

    class B:def __init__(self):    self.data = []def update(self, row):    for r in row:        self.data.append(r)def finalize(self):    return np.reshape(self.data, newshape=(len(self.data)/5, 5))
  3. 尝试在numpy中实现arraylist:(0.362秒)

    class C:def __init__(self):    self.data = np.zeros((100,))    self.capacity = 100    self.size = 0def update(self, row):    for r in row:        self.add(r)def add(self, x):    if self.size == self.capacity:        self.capacity *= 4        newdata = np.zeros((self.capacity,))        newdata[:self.size] = self.data        self.data = newdata    self.data[self.size] = x    self.size += 1def finalize(self):    data = self.data[:self.size]    return np.reshape(data, newshape=(len(data)/5, 5))

这就是我的计时方式:

x = C()for i in xrange(100000):    x.update([i])

因此,看起来常规的旧Python列表相当不错;)

Java 在数字数组中查找缺失数字的最快方法

Java 在数字数组中查找缺失数字的最快方法

如何解决Java 在数字数组中查找缺失数字的最快方法?

你可以在O(n)中执行此操作。遍历数组并计算所有数字的总和。现在,从1到N的自然数之和可以表示为Nx(N+1)/2。在你的情况下,N = 100。

从中减去数组的总和Nx(N+1)/2,其中N = 100。

那是丢失的号码。可以在计算总和的迭代过程中检测到空时隙。

// will be the sum of the numbers in the array.
int sum = 0;
int idx = -1;
for (int i = 0; i < arr.length; i++)
{
    if (arr[i] == 0)
    {
         idx = i; 
    }
    else 
    {
         sum += arr[i];
    }
}

// the total sum of numbers between 1 and arr.length.
int total = (arr.length + 1) * arr.length / 2;

System.out.println("missing number is: " + (total - sum) + " at index " + idx);

解决方法

我有一个从1到100(包括两端)的数字数组。数组的大小为100。将数字随机添加到数组中,但是数组中有一个随机的空插槽。找到该插槽的最快方法是什么,应该在插槽中放入多少?最好使用Java解决方案。

NumPy数组的最小-最大归一化

NumPy数组的最小-最大归一化

我有以下numpy数组:

foo = np.array([[0.0,10.0],[0.13216,12.11837],[0.25379,42.05027],[0.30874,13.11784]])

产生:

[[  0.       10.     ]
 [  0.13216  12.11837]
 [  0.25379  42.05027]
 [  0.30874  13.11784]]

如何标准化此数组的Y分量。所以它给了我类似的东西:

[[  0.       0.   ]
 [  0.13216  0.06 ]
 [  0.25379  1    ]
 [  0.30874  0.097]]

python numpy数组的numpy数组

python numpy数组的numpy数组

我在创建numpy数组的numpy数组时遇到问题。我将在一个循环中创建它:

a=np.array([])
while(...):
   ...
   b= //a numpy array generated
   a=np.append(a,b)
   ...

所需结果:

[[1,5,3],[9,10,1],...,[4,8,6]]

实际结果:

[1,3,9,1,... 4,6]

可能吗?我不知道数组的最终尺寸,因此无法使用固定尺寸对其进行初始化。

python – 对numpy数组切片进行采样的最快方法是什么?

python – 对numpy数组切片进行采样的最快方法是什么?

我有一个3D(时间,X,Y)numpy数组,包含6个小时的时间序列几年. (比如5).我想创建一个采样时间序列,其中包含从可用记录中随机抽取的每个日历日的1个实例(每天5种可能性),如下所示.

> Jan 01:2006
> Jan 02:2011
> Jan 03:2009
> ……

这意味着我需要从01/01/2006获取4个值,从2011年2月1日起获取4个值等.
我有一个工作版本,其工作原理如下:

>重塑输入数组以添加“年”维度(时间,年份,Y)
>创建一个365值组的随机生成的0到4之间的整数
>使用np.repeat和整数数组仅提取相关值:

例:

sampledValues = Variable[np.arange(numberOfDays * ValuesPerDays),sampledYears.repeat(ValuesPerDays),:,:]

这似乎有效,但我想知道这是否是解决我问题的最佳/最快方法?速度很重要,因为我在循环中这样做,adn将受益于测试尽可能多的情况.

我这样做了吗?

谢谢

编辑
我忘了提到我过滤了输入数据集以删除闰年的第29个feb.

基本上,该操作的目的是找到一个365天的样本,与平均值等方面的长期时间序列匹配良好.如果采样的时间序列通过我的质量测试,我想导出它并重新开始.

最佳答案
2008年是366天,所以不要重塑.

看看scikits.timeseries:

import scikits.timeseries as ts

start_date = ts.Date('H','2006-01-01 00:00')
end_date = ts.Date('H','2010-12-31 18:00')
arr3d = ... # your 3D array [time,Y]

dates = ts.date_array(start_date=start_date,end_date=end_date,freq='H')[::6]
t = ts.time_series(arr3d,dates=dates)
# just make sure arr3d.shape[0] == len(dates) !

现在,您可以使用日/月/年对象访问t数据:

t[np.logical_and(t.day == 1,t.month == 1)]

例如:

for day_of_year in xrange(1,366):
    year = np.random.randint(2006,2011)

    t[np.logical_and(t.day_of_year == day_of_year,t.year == year)]
    # returns a [4,Y] array with data from that day

使用t的属性来使其与闰年一起工作.

我们今天的关于增长numpy数字数组的最快方法增长numpy数字数组的最快方法是什么的分享已经告一段落,感谢您的关注,如果您想了解更多关于Java 在数字数组中查找缺失数字的最快方法、NumPy数组的最小-最大归一化、python numpy数组的numpy数组、python – 对numpy数组切片进行采样的最快方法是什么?的相关信息,请在本站查询。

本文标签: