如何在Cython中创建int类型的空numpy数组?下面的代码适用于双精度或浮点数组:
# make array of size N of type float
cdef np.ndarray[float, ndim=1] myarr = np.empty(N)
# make array of size N of type int
cdef np.ndarray[int, ndim=1] myarr = np.empty(N)
但是,如果我尝试对int执行相同的操作,则会失败:
# this fails
cdef np.ndarray[np.int, ndim=1] myarr = np.e
我在NumPy中有一个简单的一维数组和一个空数组。我试图将它们连接起来,但是我得到了一个浮动数组。
from numpy import *
a = zeros(5,'i')
a += 1
b = []
c = hstack((a,b))
d = concatenate((a, b))
print("a",a)
print("b",b)
print("c",c)
print("d",d)
我得到了:
a [1 1 1 1 1]
b []
c [1. 1. 1. 1. 1.]
d [1. 1. 1. 1. 1.]
我有“2006年至2016年IMDB数据”的数据框,它在Kaggle站点:。我已经将它作为numpy数组,但是当我想要将它的两行的内积赋给numpy.float64变量时,它给出了这个错误:
sim[i][1] = np.inner(vec[i],vec[1])
TypeError: 'numpy.float64' object does not support item assignment
下面是我的代码:
X = trainset.drop(['Description', 'Runtime','Director','
为什么numpy数组中的元素不相等?
这是我的env:
jupyter QtConsole 4.3.1
Python 2.7.13 |Anaconda custom (x86_64)| (default, Dec 20 2016, 23:05:08)
Type "copyright", "credits" or "license" for more information.
IPython 5.3.0 -- An enhanced Interactive Python.
? -> Introduction and ove
当使用自定义类的numpy array时:
class TestClass:
active = False
如何使用内联掩码(布尔索引数组),如下所示:
直接尝试失败:
items = np.array([TestClass() for _ in range(10)])
items[items.active]
AttributeError: 'numpy.ndarray' object has no attribute 'active'
有什么建议吗?
我拥有的:
我正在创建一个dataclass,并说明其元素的类型:
class Task():
n_items: int
max_weight: int
max_size: int
items: numpy.array(Item) # incorrect way of doing it
我想做什么
我想声明,items将是类"Item“的服从项的numpy数组。
我正在尝试子类化一个numpy结构数组,这样我就可以在子类中添加特殊的方法。一切都很好,直到我从数组中检索到一个索引。当发生这种情况时,将返回numpy.void类型的对象,而不是子类的类型。(实际上,无论是否进行子类化,从结构化数组中检索单个索引都会返回numpy.void类型的对象。)为什么会这样呢?我如何确保返回我的类的一个实例?我认为重写__getitem__是可行的方法,但我对ndarray子类化还不够熟悉,不能确信我不会搞砸其他事情。请给我建议。
下面是我所描述的行为的一个示例:
import numpy as np
# The ndarray subclass
class Fo
当我在布尔型数组上使用numpy函数minimum()和maximum()时,结果的类型打印为numpy.int32。但是,与numpy.int32类型的比较失败(即使在强制转换之后)。这是一个bug吗?
g = np.ones((5, 5), dtype = np.bool)
h = np.maximum(g, 4)
i = np.int32(h)
print 'type of g ', g.dtype.type # prints <type 'numpy.bool_'>
print 'type of h ', h.dtype
我在使用Python/numpy方面是个文盲。
我有以下代码:
data = np.array([])
for i in range(10):
data = np.append(data, GetData())
return data
GetData()返回具有自定义dtype的numpy数组。但是,在执行上面的代码时,数字转换为float64,我怀疑这是我遇到的其他问题的罪魁祸首。如何在保留dtype的同时复制/追加函数的输出?
当我对numpy进行索引时,有时索引可以是一个空列表,这样我希望numpy也返回一个空数组。例如:
a = np.array([1, 2, 3])
b = []
print a[b]
这可以很好地工作!当结果告诉我:
result:[]
但是当我使用ndarray作为索引器时,奇怪的事情发生了:
a = np.array([1, 2, 3])
b = []
c = np.array(b)
print a[c]
这给了我一个错误:
IndexError: arrays used as indices must be of integer (or boolean) type
然而,当我这
我有一个大小为268800的矮小数组。我使用这个数组作为反向传播算法的输入向量,我想将它规范化。但是,当我尝试时会发生一些奇怪的事情;向量的大小返回为0,我得到了错误:
Backpropagator.py:56: RuntimeWarning: divide by zero encountered in true_divide
x = input.x/np.linalg.norm(input.x)
Backpropagator.py:56: RuntimeWarning: invalid value encountered in true_divide
x = input.x/np.l
我想要创建一个包含3列的numpy数组(不完全是这样),最后一个是可变长度的列表(真的)。
N = 2
A = numpy.empty((N, 3))
for i in range(N):
a = random.uniform(0, 1/2)
b = random.uniform(1/2, 1)
c = []
A[i,] = [a, b, c]
在执行过程中,我将追加或删除列表中的项目。我使用numpy.empty来初始化数组,因为这应该提供一个对象类型,即使这样,我也得到了“设置带有序列错误的数组”。我知道我是,这就是我想做的。
以前关于这个主题的问题似乎是