标签: numpy

如何以二进制表示模式打印 numpy 数组

我有一个以下 numpy 数组

a = np.array([[1,2,3,4 ,11, 12,13,14,21,22,23,24,31,32,33,34 ]], dtype=uint8)

当我打印 ai 时得到以下输出

[[ 1  2  3  4 11 12 13 14 21 22 23 24 31 32 33 34]]
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到二进制表示的输出?

例如

[[ 00000001  00000010  00000011  00000100 ...]]
Run Code Online (Sandbox Code Playgroud)

python binary numpy

4
推荐指数
1
解决办法
7062
查看次数

使用 numpy 数组和点之间的相等距离​​离散化路径

假设我在 2d 平面上有一条由参数化给出的路径,例如阿基米德螺线:

\n\n

x(t) = a*\xcf\x86*cos(\xcf\x86) , y(t) = a*\xcf\x86*sin(\xcf\x86)

\n\n

我正在寻找一种用 numpy 数组离散化它的方法,\n问题是如果我使用

\n\n
a = 1\nphi = np.arange(0, 10*np.pi, 0.1)\nx = a*phi*np.cos(phi)\ny = a*phi*np.sin(phi)\nplt.plot(x,y, "ro")\n
Run Code Online (Sandbox Code Playgroud)\n\n

我得到了一条漂亮的曲线,但这些点的距离不一样,随着\n增长\xcf\x86,两点之间的距离变得更大。\n我正在寻找一种好的且如果可能的话快速的方法来做到这一点。

\n

python numpy

4
推荐指数
1
解决办法
2678
查看次数

在 SciPy/NumPy 中查找复函数的零点

有人告诉我,只要提供一阶导数,方法 scipy.optimize.newton() 就可以解决复杂的函数。我无法让它发挥作用。newton() 的文档没有提到任何复杂的函数。有人可以告诉我如何在 SciPy 中找到像 f(z) = 1 + z^2 这样的函数的根吗?我需要解决一些更复杂的问题,但一个简单的例子会对我有很大帮助。

python numpy scipy

4
推荐指数
1
解决办法
3415
查看次数

python 检查两个向量是否相等

我有一个名为 cm 的向量,它不会改变

cm = np.array([[99,99,0]])
Run Code Online (Sandbox Code Playgroud)

和另一个称为 pt 的向量。我想循环某些值。但当两者相等时,我希望它跳过而不执行操作。为了这篇文章,我只是说让它打印出 pt 的值,但实际上我有一大堆操作要运行。这是我的代码

for i in range (95,103): 
    for j in range (95,103):
        pt = np.array([[i,j,0]])
        if pt == cm:
            continue
        print pt
Run Code Online (Sandbox Code Playgroud)

我尝试将第四行更改为

if pt.all == cm.all 
Run Code Online (Sandbox Code Playgroud)

但这会打印所有内容,包括我想跳过的内容,然后如果我将其变成

if pt.all() == cm.all()
Run Code Online (Sandbox Code Playgroud)

那也行不通。无论如何,这两者之间有什么区别?

有谁知道我如何修复它,以便当 pt = [99,99,0] 时它将跳过操作并返回到循环的开头?谢谢!

python numpy

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

python中稀疏矩阵的逐元素乘法

我想知道是否有一个运算符用于将稀疏矩阵的行与 scipy.sparse 库中的向量进行按元素相乘。类似于 numpy 数组的 A*b 吗?谢谢。

numpy scipy python-2.7

4
推荐指数
1
解决办法
2318
查看次数

来自 PIL 图像的 32 位 RGBA numpy 数组

假设我将图像加载为:

> image = Image.open('temp.png')

<PngImagePlugin.PngImageFile image mode=RGBA size=1200x600 at 0x112F0C488>
Run Code Online (Sandbox Code Playgroud)

请注意,图像尺寸为1200x600。

我想将此图像作为 2D numpy 数组检索,其中每个条目保存一个32位整数。

如果我做:

np.array(image).shape
Run Code Online (Sandbox Code Playgroud)

我得到:

(600,1200, 4)
Run Code Online (Sandbox Code Playgroud)

如何将其转换为 32 位 RGBA 2D numpy 数组?

python numpy computer-vision python-imaging-library

4
推荐指数
1
解决办法
6870
查看次数

Numpy:给定矩阵的非零索引如何将元素提取到子矩阵中

我有非常稀疏的矩阵,所以我想提取具有非零值的矩阵的最小矩形区域。我知道 numpy.nonzero(a) 为您提供非零元素的索引,但如何使用它来提取包含这些索引处的矩阵元素的子矩阵。

举个例子,这就是我的目标:

>>> test
array([[0, 0, 0, 0, 0, 0],
       [0, 1, 1, 1, 1, 0],
       [0, 0, 1, 1, 0, 0]])
>>> np.nonzero(test)
(array([1, 1, 1, 1, 2, 2]), array([1, 2, 3, 4, 2, 3]))
>>> submatrix(test)
array([[1, 1, 1, 1],
       [0, 1, 1, 0]])
Run Code Online (Sandbox Code Playgroud)

有谁知道在 numpy 中执行此操作的简单方法吗?谢谢。

python numpy

4
推荐指数
1
解决办法
2790
查看次数

通过指定行和列从另一个数组创建 NumPy 数组

如何通过指定要包含哪些行和列(分别由和表示)来创建B作为 NumPy array 的子数组的NumPy 数组?Axy

例如:

A = numpy.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]])
x = [0, 2]
y = [1, 3, 4]
B = # Do something .....
Run Code Online (Sandbox Code Playgroud)

应该给出输出:

>>> B
array([[2, 4, 5], [12, 14, 15]])
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

4
推荐指数
1
解决办法
2万
查看次数

用两个 numpy 向量中的元素对上的函数填充矩阵的最快方法?

我有两个一维 numpy 向量va,vb它们用于通过将所有对组合传递给函数来填充矩阵。

na = len(va)
nb = len(vb)
D = np.zeros((na, nb))
for i in range(na):
    for j in range(nb):
        D[i, j] = foo(va[i], vb[j])
Run Code Online (Sandbox Code Playgroud)

就目前情况而言,由于 va 和 vb 相对较大(4626 和 737),这段代码需要很长时间才能运行。然而,我希望这可以得到改进,因为使用cdistscipy 中的方法执行类似的过程具有非常好的性能。

D = cdist(va, vb, metric)
Run Code Online (Sandbox Code Playgroud)

我显然知道 scipy 具有在 C 中而不是在 python 中运行这段代码的好处 - 但我希望有一些我不知道的 numpy 函数可以快速执行它。

python performance numpy pandas

4
推荐指数
1
解决办法
2377
查看次数

Numpy:按行唯一元素

有谁知道如何在矩阵中逐行获取唯一元素。例如输入矩阵可能类似于:

a = [[1,2,1,3,4,1,3],
     [5,5,3,1,5,1,2],
     [1,2,3,4,5,6,7],
     [9,3,8,2,9,8,4],
     [4,6,7,4,2,3,5]]
Run Code Online (Sandbox Code Playgroud)

它应该返回以下内容:

b = rowWiseUnique(a)
=>  b = [[1,2,3,4,0,0,0],
       [5,3,1,2,0,0,0],
       [1,2,3,4,5,6,7],
       [9,3,8,2,4,0,0],
       [4,6,7,2,3,5,0]]
Run Code Online (Sandbox Code Playgroud)

在 numpy 中执行此操作最有效的方法是什么?我尝试了以下代码,是否有更好、更短的方法来执行此操作?

import numpy as np
def uniqueRowElements(row):
    length = row.shape[0]
    newRow = np.unique(row)
    zerosNumb = length-newRow.shape[0]
    zeros = np.zeros(zerosNumb)
    nR = np.concatenate((newRow,zeros),axis=0)
    return nR    

b = map(uniqueRowElements,a)
b = np.asarray(b)
print b
Run Code Online (Sandbox Code Playgroud)

python numpy scipy

4
推荐指数
1
解决办法
5147
查看次数