本文的目的是介绍增长numpy数字数组的最快方法的详细情况,特别关注增长numpy数字数组的最快方法是什么的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解增长nump
本文的目的是介绍增长numpy数字数组的最快方法的详细情况,特别关注增长numpy数字数组的最快方法是什么的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解增长numpy数字数组的最快方法的机会,同时也不会遗漏关于Java 在数字数组中查找缺失数字的最快方法、NumPy数组的最小-最大归一化、python numpy数组的numpy数组、python – 对numpy数组切片进行采样的最快方法是什么?的知识。
本文目录一览:- 增长numpy数字数组的最快方法(增长numpy数字数组的最快方法是什么)
- Java 在数字数组中查找缺失数字的最快方法
- NumPy数组的最小-最大归一化
- python numpy数组的numpy数组
- python – 对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
您提到的缓慢方法:(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))
常规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))
尝试在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 在数字数组中查找缺失数字的最快方法?
你可以在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数组:
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数组
我在创建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数组切片进行采样的最快方法是什么?
我有一个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天的样本,与平均值等方面的长期时间序列匹配良好.如果采样的时间序列通过我的质量测试,我想导出它并重新开始.
看看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数组切片进行采样的最快方法是什么?的相关信息,请在本站查询。
本文标签: