标签: numpy-ndarray

NumPy优于常规Python列表有什么优势?

NumPy优于常规Python列表有什么优势?

我有大约100个金融市场系列,我打算创建一个100x100x100 = 100万个单元的立方体阵列.我将使用每个y和z对每个x进行回归(3变量),以使用标准错误填充数组.

我听说过,对于"大型矩阵",出于性能和可伸缩性的原因,我应该使用NumPy而不是Python列表.事实是,我知道Python列表,它们似乎对我有用.

如果我搬到NumPy,会有什么好处?

如果我有1000个系列(即立方体中有10亿个浮点单元)怎么办?

python arrays numpy list numpy-ndarray

439
推荐指数
5
解决办法
16万
查看次数

如何在NumPy数组中获得N个最大值的索引?

NumPy提出了一种获取数组最大值索引的方法np.argmax.

我想要一个类似的东西,但返回N最大值的索引.

例如,如果我有一个数组,[1, 3, 2, 4, 5],function(array, n=3)将返回的索引[4, 3, 1]相对应的元素[5, 4, 3].

python numpy max numpy-ndarray

425
推荐指数
10
解决办法
31万
查看次数

numpy中flatten和ravel函数有什么区别?

import numpy as np
y = np.array(((1,2,3),(4,5,6),(7,8,9)))
OUTPUT:
print(y.flatten())
[1   2   3   4   5   6   7   8   9]
print(y.ravel())
[1   2   3   4   5   6   7   8   9]
Run Code Online (Sandbox Code Playgroud)

两个函数都返回相同的列表.那么两个不同功能执行相同工作的需求是什么.

python numpy flatten multidimensional-array numpy-ndarray

256
推荐指数
3
解决办法
7万
查看次数

Python/NumPy中meshgrid的目的是什么?

有人可以向我解释meshgridNumpy功能的目的是什么?我知道它会为绘图创建某种坐标网格,但我无法真正看到它的直接好处.

我正在学习Sebastian Raschka的"Python机器学习",他正在使用它来绘制决策边界.请参见此处的输入11 .

我也从官方文档中尝试过这段代码,但是,输出对我来说并没有多大意义.

x = np.arange(-5, 5, 1)
y = np.arange(-5, 5, 1)
xx, yy = np.meshgrid(x, y, sparse=True)
z = np.sin(xx**2 + yy**2) / (xx**2 + yy**2)
h = plt.contourf(x,y,z)
Run Code Online (Sandbox Code Playgroud)

如果可能的话,请向我展示很多现实世界的例子.

python numpy mesh multidimensional-array numpy-ndarray

253
推荐指数
7
解决办法
13万
查看次数

连接两个一维NumPy数组

我在NumPy中有两个简单的一维数组.我应该能够使用numpy.concatenate连接它们.但我得到以下代码的错误:

TypeError:只能将length-1数组转换为Python标量

import numpy
a = numpy.array([1, 2, 3])
b = numpy.array([5, 6])
numpy.concatenate(a, b)
Run Code Online (Sandbox Code Playgroud)

为什么?

python arrays numpy concatenation numpy-ndarray

225
推荐指数
4
解决办法
26万
查看次数

更好的方法是同时改变两个numpy阵列

我有两个不同形状的numpy数组,但长度相同(领先维度).我想改变它们中的每一个,使得相应的元素继续对应 - 即相对于它们的前导索引一致地混洗它们.

此代码有效,并说明了我的目标:

def shuffle_in_unison(a, b):
    assert len(a) == len(b)
    shuffled_a = numpy.empty(a.shape, dtype=a.dtype)
    shuffled_b = numpy.empty(b.shape, dtype=b.dtype)
    permutation = numpy.random.permutation(len(a))
    for old_index, new_index in enumerate(permutation):
        shuffled_a[new_index] = a[old_index]
        shuffled_b[new_index] = b[old_index]
    return shuffled_a, shuffled_b
Run Code Online (Sandbox Code Playgroud)

例如:

>>> a = numpy.asarray([[1, 1], [2, 2], [3, 3]])
>>> b = numpy.asarray([1, 2, 3])
>>> shuffle_in_unison(a, b)
(array([[2, 2],
       [1, 1],
       [3, 3]]), array([2, 1, 3]))
Run Code Online (Sandbox Code Playgroud)

然而,这种感觉笨重,效率低,而且速度慢,而且需要使阵列的复制 - 我宁愿他们洗牌在原地的,因为他们将是相当大的.

有没有更好的方法来解决这个问题?更快的执行速度和更低的内存使用率是我的主要目标,但优雅的代码也会很好.

我有另外一个想法是:

def shuffle_in_unison_scary(a, b):
    rng_state = numpy.random.get_state()
    numpy.random.shuffle(a)
    numpy.random.set_state(rng_state)
    numpy.random.shuffle(b)
Run Code Online (Sandbox Code Playgroud)

这工作...但它是一个有点吓人,因为我看不出有什么保证它会继续工作 - …

python random numpy shuffle numpy-ndarray

214
推荐指数
11
解决办法
10万
查看次数

如何将PIL图像转换为numpy数组?

好吧,我正在四处寻找将PIL图像对象来回转换为numpy数组,这样我就可以比PIL的PixelAccess对象允许更快的像素转换.我已经想出如何通过以下方式将像素信息放在一个有用的3D numpy数组中:

pic = Image.open("foo.jpg")
pix = numpy.array(pic.getdata()).reshape(pic.size[0], pic.size[1], 3)
Run Code Online (Sandbox Code Playgroud)

但在完成所有令人敬畏的变换后,我似乎无法弄清楚如何将其加载回PIL对象.我知道这个putdata()方法,但似乎无法让它表现出来.

python numpy image python-imaging-library numpy-ndarray

212
推荐指数
5
解决办法
34万
查看次数

在numpy中ndarray和array之间有什么区别?

ndarrayarrayNumpy有什么区别?我在哪里可以找到numpy源代码中的实现?

python arrays numpy multidimensional-array numpy-ndarray

208
推荐指数
4
解决办法
8万
查看次数

如何使用python/numpy计算百分位数?

有没有一种方便的方法来计算序列或单维numpy数组的百分位数?

我正在寻找类似于Excel的百分位函数的东西.

我查看了NumPy的统计参考,但是找不到这个.我能找到的只是中位数(第50百分位数),但不是更具体的东西.

python statistics numpy percentile numpy-ndarray

193
推荐指数
7
解决办法
24万
查看次数

将索引数组转换为1-hot编码的numpy数组

假设我有一个ndy阵列

a = array([1,0,3])
Run Code Online (Sandbox Code Playgroud)

我想将其编码为2d 1-hot阵列

b = array([[0,1,0,0], [1,0,0,0], [0,0,0,1]])
Run Code Online (Sandbox Code Playgroud)

有快速的方法吗?比仅仅循环a设置元素更快b.

python numpy machine-learning one-hot-encoding numpy-ndarray

191
推荐指数
9
解决办法
15万
查看次数