当计算的输入是32位整数数据类型的numpy数组时,我遇到了不正确的numpy计算问题,但是输出包含需要64位表示的更大的数字。
下面是一个最小的工作示例:
arr = np.ones(5, dtype=int) * (2**24 + 300) # arr.dtype defaults to 'int32'
# Following comment from @hpaulj I changed the first line, which was originally:
# arr = np.zeros(5, dtype=int)
# arr[:] = 2**24 + 300
本质上,我有一个numpy图像数组,我试图找出它是否包含特定RGB像素值的2x2块。因此,例如,如果我的(简化的)图像数组类似于:
A B C D E F
G H I J K L
M N O P Q R
S T U V W X
我正在试着检查它是否包含:
J K
P Q
我对numpy很陌生,所以我很感谢你在这方面的帮助,谢谢。
我想检查一维numpy数组列表中的一维numpy数组是否为if条件下的numpy数组。
我就是这样做的:
arr = np.array([1,2])
lst = [np.array([1,2]), np.array([3,4]), None, None]
if list(arr) in [list(i) for i in lst if i is not None]:
print("Yes")
else:
print("No")
但是列表和numpy数组的大小可以大得多,那么是否有更有效的方法来做到这一点呢?而不是将每个numpy数组更改为列表
我试图操作一个numpy数组,其中包含存储在另一个数组中的数据。到目前为止,当我更改数组中的值时,两个数组的值都发生了变化:
import numpy as np
from astropy.io import fits
image = fits.getdata("randomImage.fits")
fft = np.fft.fft2(image)
fftMod = np.copy(fft)
fftMod = fftMod*2
if fftMod.all()== fft.all():
print "shit same same same "
在三维numpy数组上构建布尔掩码时,我面临着一个问题。该数组可以想象如下,例如,一个形状(18,2,7)包含随机数的数组:
import random
import numpy as np
a = np.array([[[random.random() for i in range(7)] for j in range(2)] for k in range(18)])
以及形状为(18,2,1)的预定义布尔掩码
x = np.zeros((18,2,1), dtype="bool")
重要事项:我不能在这里更改变量定义,必须使用此形状.
我想在a上迭代,如果a中的值小于0.
如何检查numpy数组是否有规则的形状。
在下面的示例中,x是一个*2 by 3*矩阵。但是,y并不是正则的,因为它不能被表示为适当的矩阵。
假设我有一个numpy数组,是否有一个方法(最好是内置的)来检查numpy数组是一个实际的矩阵?
In [9]: import numpy as np
In [10]: x = np.array([[1,2,3],[4,5,6]])
In [11]: x.shape
下面的python代码为一个numpy数组创建数据,我使用该数组在图上绘制一个单元框: box = np.array([[x, y] for x in np.arange(0.0, 1.01, 0.01) for y in
np.arange(0.0, 1.01, 0.01)]) 我想将box --向x分量添加一个数字,向y分量添加一个不同的数字--转换为另一个numpy数组,这样新的框就会出现在图中的其他位置。 我遇到了一些麻烦,我不知道我是否可以切片一个numpy数组来做我需要的加法,或者正确的循环语法是什么。 我的问题是:我怎么加,比如说每个x元素加1,每
比如说,我有一个numpy数组的列表,
a = [np.random.rand(3, 3), np.random.rand(3, 3), np.random.rand(3, 3)]
我有一个测试数组,比如说
b = np.random.rand(3, 3)
我想检查a是否包含b。然而,
b in a
引发以下错误:
ValueError:包含多个元素的数组的真值是不明确的。使用a.any()或a.all()
我想要什么才是合适的方法?
我的问题是关于在numpy中的数组切片。以下行为的逻辑是什么?
x = arange(25)
x.shape = (5, 5)
# This results in a 2-d array in which rows and columns are excerpted from x
y = x[0:2, 0:2]
# But this results in a 1-d array
y2 = x[0:2, 0]
我本来希望y2是一个二维数组,它包含0和1列中的值。
我在cython中创建了一个输入内存视图,并希望将其乘以一个标量:
import numpy as np
import math
cimport numpy as np
def foo():
N = 10
cdef np.double_t [:, :] A = np.ones(shape=(N,N),dtype=np.double_)
cdef int i,j
cdef double pi = math.pi
for i in range(N):
for j in range(N):
A[i,j] *= pi
我在python中使用set操作来执行两个numpy数组之间的对称差。然而,结果是一个set,我需要将它转换回numpy数组才能继续。有没有办法做到这一点?这是我尝试过的:
a = numpy.array([1,2,3,4,5,6])
b = numpy.array([2,3,5])
c = set(a) ^ set(b)
结果是一组:
In [27]: c
Out[27]: set([1, 4, 6])
如果我转换为numpy数组,它会将整个集合放在第一个数组元素中。
In [28]: numpy.array(c)
Out[28]: array(set([1, 4, 6]), dtype=o